Re: [請益] 後端精進的方向?
: → superpandal: 怎麼會有人想不開想要跑過來 這些東西其實你自己碰都 01/12 00:08
: → superpandal: 可以做出差不多的工具出來... 模板語言的話用什麼都 01/12 00:09
: → superpandal: 可以 很多目前看到的不外乎就是偵測檔案變化並生成程 01/12 00:10
: → superpandal: 式碼 還是偏底層比較好 路廣 01/12 00:11
: → superpandal: 可以說都在學怎麼應用這些工具 而不是真正的知識... 01/12 00:17
: → Hsins: 偵測檔案變化生成程式碼聽起來好屌ㄛ,你的模板可能跟大家 01/12 00:23
: → Hsins: 的模板不太一樣欸。 01/12 00:23
: → superpandal: 不然呢js很多框架就是這樣 haha 不然你以為光xml格式 01/12 00:27
: → superpandal: 的語法就可以跑... 01/12 00:27
不是啊,你可不可以不要每次都想要說個好像高深莫測的東西,但
是其實自己不是很理解呀?我覺得傳遞錯誤的知識比藏拙還要更可
惡耶。比如上次在那嘴人家 Wine 不做自動化測試,可是人家明明
付出了超級多的心力在那塊:
https://www.ptt.cc/bbs/Soft_Job/M.1636600658.A.81D.html
回到這次的主題來。
模板引擎(Templating Engines)這種東西雖然沒有什麼學術上明
確的定義,但絕對不是你所謂的「偵測檔案變化並生成程式碼」好
嗎?這邊我借用一下 Vue.js 的作者尤雨溪曾經在一篇回答中所使
用過的敘述:
「嚴格的模板引擎的定義:
輸入模板字串 + 資料,得到渲染過的字串。」
[REF]: https://www.zhihu.com/question/32524504/answer/55812327
或者在絕大多數的狀況下,甚至可以說是將資料(data)和模板(
template)合併然後生成 HTML 文件,再返回給發出 HTTP 請求的
客戶端。這些資料在後端會透過與資料庫進行交互取得,又不是三
十年前,你的資料不是來自於純文字檔案,請問哪裡偵測了檔案變
化?
在早期前後端分離架構還不流行時,這是十分常見的作法,常見的
模板引擎,比如:
- Spring 搭配 JSP, Freemaker, Thymeleaf 等
- Flask 搭配 Jinja2
- Laravel 搭配 Blade
- Django 自己就帶有模板引擎
- Express.js 搭配 Jade, EJS 等
- Rails 搭配 Erb, Haml 等
他們在使用上都很類似,比如以 JSP來說,使用上可能是這樣的
,其中 user 的資料會在 Controller 裡面從資料庫中獲取再帶
入:
<table border="1">
<c:forEach items="${users}" var="user">
<tr>
<td>${user.username}</td>
<td>${user.age}</td>
<td>${user.address}</td>
</tr>
</c:forEach>
</table>
如果使用過前端框架比如 React, Vue, Angular, Svelte之類的,
可能會發現在語法跟概念上有類似的地方,但在本質上是有所不同
的:
1. 模板引擎在後端將資料和模板組成 HTML 並返回給客戶端
2. 前端框架通常是透過轉換成 live DOM 或操作 virtual DOM 來
將透過 AJAX方式獲取到的資料渲染到頁面上,但各自的實作略
有差別
至於前後端分離與前後端不分離之間的差異和優缺點我就不多加贅
述了。只希望有些人可以做點功課再來說話,不要人家就已經是煩
惱想要求解了,還在那邊被你亂。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.71.215.250 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1641921221.A.B4E.html
→
01/12 01:19,
2年前
, 1F
01/12 01:19, 1F
→
01/12 01:21,
2年前
, 2F
01/12 01:21, 2F
這種東西如果要說到 socket 就又扯遠了,我想以常人看到那句「
偵測檔案變化」所想到的要嘛是檔案內容或相關資訊變動而做出行
為,在這層面上來說不會想到是 socket。 以常見的架構來說,是
後端根據客戶端發送請求時夾帶的資料,在控制層裡依照需求去與
資料庫交互,獲取到資料後再放入,交由模板引擎產出 HTML。
另外這跟他扯到的 JS 框架很多也是這樣是兩回事,這也是為什麼
尤雨溪那篇對於提問者將東西混為一談很有意見,畢竟「前端框架
」和「模板引擎」是兩個概念,不論理念、實踐跟功能上都是完全
不一樣的東西。
→
01/12 01:21,
2年前
, 3F
01/12 01:21, 3F
→
01/12 01:21,
2年前
, 4F
01/12 01:21, 4F
雖然跟這個主題沒什麼關聯,但你上次的說法是「 Wine 開發者為何
不考慮一下自動化測試」,而不是測試成果不大,是我提了之後你才
改口的。
→
01/12 01:24,
2年前
, 5F
01/12 01:24, 5F
→
01/12 01:25,
2年前
, 6F
01/12 01:25, 6F
→
01/12 01:25,
2年前
, 7F
01/12 01:25, 7F
→
01/12 01:28,
2年前
, 8F
01/12 01:28, 8F
沒嘴呀。模板引擎在早些年前後端不分離的架構下扮演著重要角色。
我覺得算是大家都知道的東西啦。生成程式碼或生成文件不是我要說
你的謬誤點,你的謬誤點是偵測檔案變化好嗎?
→
01/12 01:32,
2年前
, 9F
01/12 01:32, 9F
→
01/12 01:32,
2年前
, 10F
01/12 01:32, 10F
→
01/12 01:39,
2年前
, 11F
01/12 01:39, 11F
→
01/12 01:51,
2年前
, 12F
01/12 01:51, 12F
→
01/12 01:52,
2年前
, 13F
01/12 01:52, 13F
所以一來你沒搞清楚自動化測試是什麼,二來根本連我貼了網址也沒
回去認真看嘛!
https://wiki.winehq.org/Conformance_Tests
當初 Wine 的開發團隊為了進行自動化測試,建構了一組單元測試並
打包成每日更新的執行檔,讓世界各地的使用者可以運行之後獲得每
日的測試報告,不知道花費了多少心力。
另外自動化測試可以是白盒測試、黑盒測試也可以是混合的灰盒測試
,並不是黑盒測試就不會是自動化測試。
→
01/12 01:53,
2年前
, 14F
01/12 01:53, 14F
→
01/12 01:54,
2年前
, 15F
01/12 01:54, 15F
→
01/12 01:55,
2年前
, 16F
01/12 01:55, 16F
→
01/12 02:03,
2年前
, 17F
01/12 02:03, 17F
→
01/12 02:03,
2年前
, 18F
01/12 02:03, 18F
我不確定你有沒有帶過新人啦,但你這樣的敘述方式我真希望希望
沒有……不知道你說的 PHP 有 cache 起來究竟是指些什麼。如果
是指像是 Smart這樣的模板引擎的快取機制,他也是會先經過上述
將資料與模板進行合併產出 HTML 文件的過程,那是 Smart提供的
而不是 PHP 提供的。
另外前端框架比如 Vue 有提供元件樣板(template) ,但那與像
是 Jinja2 這類的模板引擎並不相同,上面尤大大那篇回答我真的
建議您可以看一下。
→
01/12 02:06,
2年前
, 19F
01/12 02:06, 19F
→
01/12 02:06,
2年前
, 20F
01/12 02:06, 20F
→
01/12 02:09,
2年前
, 21F
01/12 02:09, 21F
自動化測試就自動化測試,智能測試又是什麼辣><
→
01/12 02:18,
2年前
, 22F
01/12 02:18, 22F
→
01/12 02:19,
2年前
, 23F
01/12 02:19, 23F
這不是專業的區隔感,是描述問題的精確性,你如果做了很多並不
那麼精確的描述,而且這不是為了比喻所以才用白話敘述,甚至說
了些似是而非的東西,那只是「竹篙湊菜刀」而已。
→
01/12 02:20,
2年前
, 24F
01/12 02:20, 24F
→
01/12 02:24,
2年前
, 25F
01/12 02:24, 25F
→
01/12 02:24,
2年前
, 26F
01/12 02:24, 26F
噓
01/12 02:24,
2年前
, 27F
01/12 02:24, 27F
→
01/12 02:24,
2年前
, 28F
01/12 02:24, 28F
→
01/12 02:24,
2年前
, 29F
01/12 02:24, 29F
→
01/12 02:24,
2年前
, 30F
01/12 02:24, 30F
這我是沒問題啦。另外如果你對於我上面的內容和我的說法有什麼
問題也可以提出來呀,我會這樣說是因為在我認知和所接收到的資
訊(比如上面 Evan You 的說法)中,大多數人在這樣情境下談及
的模板引擎並不是他所說的那樣。
如果他本身傳遞的內容就是錯誤的,這樣的狀況和你說的知乎上那
件事是不同的。
→
01/12 02:26,
2年前
, 31F
01/12 02:26, 31F
還有 35 則推文
還有 5 段內文
→
01/12 21:03,
2年前
, 67F
01/12 21:03, 67F
→
01/12 21:05,
2年前
, 68F
01/12 21:05, 68F
→
01/12 21:05,
2年前
, 69F
01/12 21:05, 69F
→
01/12 21:08,
2年前
, 70F
01/12 21:08, 70F
→
01/12 21:09,
2年前
, 71F
01/12 21:09, 71F
→
01/12 21:10,
2年前
, 72F
01/12 21:10, 72F
我是覺得 Web技術很高深啦!當然上述的內容在使用上看起來可
能是很淺顯的,但要發展到今天的規模和支持這麼多的項目,中
間一定有很多細節。我沒有自以為眼尖,只看到有人穿鑿附會東
拼西湊,在資訊科學領域裡面,我們都不應該頻頻「舉燭」:(
→
01/12 21:17,
2年前
, 73F
01/12 21:17, 73F
→
01/12 21:18,
2年前
, 74F
01/12 21:18, 74F
→
01/12 21:18,
2年前
, 75F
01/12 21:18, 75F
→
01/12 21:22,
2年前
, 76F
01/12 21:22, 76F
→
01/12 21:23,
2年前
, 77F
01/12 21:23, 77F
→
01/12 21:23,
2年前
, 78F
01/12 21:23, 78F
這邊我就不知道你在說什麼了,但好像聽起來還是很厲害的樣子
。您一定很厲害的,什麼東西都瞧不上,什麼東西又都能說一說
,至少比我厲害的多了,在我眼中真的很神 :)
→
01/13 18:42,
2年前
, 79F
01/13 18:42, 79F
→
01/13 18:44,
2年前
, 80F
01/13 18:44, 80F
→
01/13 18:48,
2年前
, 81F
01/13 18:48, 81F
→
01/13 18:49,
2年前
, 82F
01/13 18:49, 82F
→
01/13 18:50,
2年前
, 83F
01/13 18:50, 83F
→
01/13 18:52,
2年前
, 84F
01/13 18:52, 84F
→
01/13 18:53,
2年前
, 85F
01/13 18:53, 85F
抱歉,我覺得都是很了不得的技術,是有很多前人鋪好了路把很
多東西抽象了才能讓你這樣拼湊 API就覺得好像完成了全世界。
我不知道為什麼你感覺什麼東西都能夠瞧不上眼,您如果覺得你
說的熱啟動對於現今的模板引擎有重大影響,您倒是說說呀!讓
人長長見識開開眼界,而不是噴了一句閃人又補一句說自己不愛
分享就作罷呀。
對了,我上面說的是資訊科學不是資料科學。我很期待跟您討論
技術,畢竟我覺得這些東西就像汪洋的大海,我只是在旁邊撿著
石頭的小孩子而已:) 如果能夠得到您的指教那一定可以讓我成
長很多的吧!
→
01/13 18:55,
2年前
, 86F
01/13 18:55, 86F
→
01/13 18:57,
2年前
, 87F
01/13 18:57, 87F
→
01/13 19:00,
2年前
, 88F
01/13 19:00, 88F
怎樣才算是掌握技術呢?好想知道認為這些技術都不是什麼大不
了的東西的大大跟我分享><
推
01/14 08:07,
2年前
, 89F
01/14 08:07, 89F
※ 編輯: Hsins (111.71.215.8 臺灣), 01/14/2022 14:09:16
→
01/14 23:12,
2年前
, 90F
01/14 23:12, 90F
→
01/14 23:13,
2年前
, 91F
01/14 23:13, 91F
→
01/14 23:14,
2年前
, 92F
01/14 23:14, 92F
→
01/14 23:14,
2年前
, 93F
01/14 23:14, 93F
→
01/14 23:16,
2年前
, 94F
01/14 23:16, 94F
→
01/14 23:17,
2年前
, 95F
01/14 23:17, 95F
→
01/14 23:18,
2年前
, 96F
01/14 23:18, 96F
→
01/14 23:19,
2年前
, 97F
01/14 23:19, 97F
→
01/14 23:20,
2年前
, 98F
01/14 23:20, 98F
→
01/14 23:24,
2年前
, 99F
01/14 23:24, 99F
→
01/14 23:25,
2年前
, 100F
01/14 23:25, 100F
→
01/14 23:26,
2年前
, 101F
01/14 23:26, 101F
討論串 (同標題文章)