自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

我不再寫(xiě)Javascript了

譯文 精選
開(kāi)發(fā) 前端
Wikipedia、Flickr、Facebook、Slack 和 Wordpress 最初都使用了 PHP。PHP 有何特點(diǎn)?我對(duì) PHP 不太了解,但從表面來(lái)看,在我這個(gè)癡迷于走捷徑的人看來(lái),PHP 絕對(duì)是在密謀提供捷徑。

作者丨Cal Paterson

編譯丨諾亞

Csvbase是一個(gè)托管表數(shù)據(jù)的網(wǎng)站。關(guān)于csvbase有一點(diǎn)不尋常的是,當(dāng)我編寫(xiě)它時(shí),我沒(méi)有編寫(xiě)任何 Javascript。

大多數(shù)我沒(méi)有寫(xiě)的 Javascript 分為以下幾類(lèi):

我沒(méi)有編寫(xiě)任何前端表單驗(yàn)證。沒(méi)有必要——這些都可以通過(guò) HTML5 來(lái)完成。

我沒(méi)有寫(xiě)日期選擇器。再說(shuō)一遍,HTML5。

 

圖片圖片

過(guò)去需要花費(fèi)數(shù)千行 Javascript 來(lái)完成此操作。現(xiàn)在瀏覽器會(huì)為你做這件事

我最喜歡的功能是,你可以直接將 MS-Excel 中的單元格粘貼到神奇的文本區(qū)域中,而 csvbase 會(huì)盡力找出它是什么并將其轉(zhuǎn)換為表格。再次強(qiáng)調(diào):不涉及 JavaScript。實(shí)際上,在后端推斷數(shù)據(jù)類(lèi)型、指定字符串編碼、檢測(cè)單元格分隔符等等要容易得多。

我的頁(yè)面上的HTML是由模板生成的,就像還是2005 年一樣。

表單multipart/form-encoding是用XHR(XMLHttpRequest)出現(xiàn)之前我的前輩所做的方式提交的。

當(dāng)表單是“可編輯的”(即,你得到某種加號(hào)按鈕,可以動(dòng)態(tài)添加另一個(gè)表單字段),我只需讓該加號(hào)按鈕添加一個(gè)查詢參數(shù),并使用 HTTP GET 來(lái)獲取添加了該字段的表單的新版本(減號(hào)按鈕則相反)。同樣,HTML5 允許你為各個(gè)按鈕提供特殊的 “formaction”,并使這個(gè)技巧比以前更容易。

堅(jiān)持己見(jiàn)的人會(huì)爭(zhēng)辯說(shuō),實(shí)際上我使用的 CSS 框架附帶了一個(gè).js文件。這是真的——但那個(gè)文件不是我寫(xiě)的。我都沒(méi)讀過(guò)。就我而言,它是完全封裝的。所以事實(shí)是:我沒(méi)有寫(xiě)任何 JavaScript。

1、汽車(chē)和公共汽車(chē)

但何苦呢?如果你能做到,不寫(xiě)JavaScript會(huì)讓你的生活更輕松,從而節(jié)省你的時(shí)間。

預(yù)測(cè)汽車(chē)可靠性的一種方法是通過(guò)零件的數(shù)量。零件數(shù)量較多的汽車(chē)往往可靠性較差,因?yàn)殡S著汽車(chē)變得越來(lái)越復(fù)雜,出現(xiàn)問(wèn)題的方式必然會(huì)越來(lái)越多。如果你確實(shí)有一個(gè)零件,最好不要是一個(gè)移動(dòng)的零件。內(nèi)飾件很少造成機(jī)械師的麻煩。然而,如果你的機(jī)械師提到你的變速箱 ,你將聽(tīng)到非常壞的消息。在其他條件相同的情況下:零件越少越好。

將 Javascript 添加到任何項(xiàng)目中總是會(huì)帶來(lái)很多部分。幾乎所有的都是那種麻煩的移動(dòng)類(lèi)型。三年前,微軟的某人確定Github上的Javascript項(xiàng)目平均只有10個(gè)直接依賴項(xiàng),但有683個(gè)間接依賴項(xiàng)(想想:庫(kù)X需要庫(kù)Y,需要庫(kù)Z……)。

大多數(shù)嚴(yán)肅的商業(yè)Javascript應(yīng)用程序的數(shù)據(jù)要高得多。這可能是NPM (Javascript包管理器)需要風(fēng)險(xiǎn)投資的原因之一——解決Javascript構(gòu)建依賴關(guān)系可能是我們目前可用的最尖端技術(shù)。

省略Javascript不僅更可靠,而且更簡(jiǎn)單。與編寫(xiě)糟糕的 React 所需的技能相比,模板HTML的技能集要小得多。當(dāng)我過(guò)去從事專(zhuān)業(yè)的Web項(xiàng)目時(shí),我經(jīng)常發(fā)現(xiàn)前端開(kāi)發(fā)所使用的技能的深度和環(huán)境令人難以置信。例如,你知道嗎,現(xiàn)在許多(甚至是基本的)Web 應(yīng)用程序都包含一個(gè)完整的瀏覽器內(nèi)事件總線?這是一種一開(kāi)始聽(tīng)起來(lái)肯定很瘋狂的事情,但可悲的是,隨著你了解得越多,它就開(kāi)始變得更有意義。

最重要的好處之一是,不編寫(xiě) Javascript 會(huì)讓你的系統(tǒng)更容易測(cè)試。由于我的系統(tǒng)關(guān)注的是用戶端,一旦我將HTML寫(xiě)入套接字,我就不需要為瀏覽器建模,只需要一個(gè)HTML解析器。因此,我的測(cè)試可以在 HTTP 級(jí)別上運(yùn)行,并且由于速度相當(dāng)快,我可以進(jìn)行更多的“全系統(tǒng)”測(cè)試。目前,我有大約 360 個(gè)測(cè)試,其中大多數(shù)是通過(guò) HTTP 客戶端進(jìn)行測(cè)試。HTTP 是一個(gè)很好的抽象級(jí)別,因?yàn)槟憧梢哉f(shuō),例如“給定一個(gè)用戶,當(dāng)他發(fā)布此表單時(shí),他會(huì)得到這種 HTML”。

整個(gè)測(cè)試套件的運(yùn)行時(shí)間為 3.5 秒——沒(méi)有并行性。每次測(cè)試大約需要 10 毫秒。我應(yīng)該提到的是,我沒(méi)有模擬數(shù)據(jù)庫(kù)。由于 csvbase 是一種 ORM,因此損失正確性不值得提高速度。有些查詢可能會(huì)變得相當(dāng)復(fù)雜。

2、使用更多快捷方式,減少時(shí)間

所有這一切的結(jié)果是節(jié)省時(shí)間。有個(gè)老梗說(shuō),如果任何政府計(jì)劃失敗,那是因?yàn)轭A(yù)算不夠大(如果成功了,那也只能證明需要更多預(yù)算)。這個(gè)笑話在軟件項(xiàng)目中的類(lèi)似之處當(dāng)然是指時(shí)間而不是金錢(qián)。

制作一個(gè)可用的軟件需要花費(fèi)大量的時(shí)間。你如何為你的業(yè)余項(xiàng)目騰出時(shí)間?

如今,有一個(gè)巨大且不斷增長(zhǎng)的“生產(chǎn)力工業(yè)綜合體”——成千上萬(wàn)的播客和博主建議如何重新組織你的生活,以節(jié)省時(shí)間,或者至少更有效地利用時(shí)間。說(shuō)實(shí)話,我對(duì)他們從來(lái)沒(méi)有感到親近。

正如金錢(qián)不是大多數(shù)政府計(jì)劃的問(wèn)題一樣,對(duì)于軟件項(xiàng)目來(lái)說(shuō),只有在其他領(lǐng)域出現(xiàn)問(wèn)題時(shí),時(shí)間才顯得重要。我一直認(rèn)為,要讓某件事走出困境,與其說(shuō)是超級(jí)高效和/或“有效”地完成,不如說(shuō)是在任何合理的時(shí)間內(nèi)找到使之成為可能的正確捷徑。

對(duì)于 csvbase,沒(méi)有 Javascript 前端是我完成任務(wù)的捷徑。這是眾多問(wèn)題之一:csvbase 沒(méi)有后臺(tái)工作人員;JSON API 使用與 HTML 頁(yè)面相同的視圖處理程序,只是不是將對(duì)象渲染到 HTML 模板中,而是將其格式化為 JSON;我也使用(幾乎)同樣的技巧來(lái)服務(wù)CSV、XLSX 和 Parquet;我仔細(xì)設(shè)置了 HTTP 標(biāo)頭,這樣我就可以利用 CDN 中內(nèi)置的緩存層,而不是自己編寫(xiě)任何緩存代碼。任何你真正能完成的副業(yè)項(xiàng)目都充斥著這些捷徑。

這并不是要貶低Facebook Reacts。它們有自己的一席之地,但專(zhuān)業(yè)程序員的職業(yè)風(fēng)險(xiǎn)是,如果你在日常工作中做了一些事情,那么你可以把你的技能帶回家并用它們來(lái)做你自己的項(xiàng)目。問(wèn)題是你也把這種心態(tài)帶回家了。你的工作場(chǎng)所的標(biāo)準(zhǔn)做法可能比你能承受的勞動(dòng)密集度高一個(gè)或兩個(gè)數(shù)量級(jí),例如(就像我的情況),你只能在你的孩子睡覺(jué)的時(shí)候才開(kāi)始做這個(gè)項(xiàng)目。

3、PHP魔術(shù)引號(hào)里面有什么嗎?

我一直對(duì)為什么那么多成功的公司開(kāi)始使用LAMP,特別是PHP很感興趣。

Wikipedia、Flickr、Facebook、Slack 和 Wordpress 最初都使用了 PHP。PHP 有何特點(diǎn)?我對(duì) PHP 不太了解,但從表面來(lái)看,在我這個(gè)癡迷于走捷徑的人看來(lái),PHP 絕對(duì)是在密謀提供捷徑。

嚴(yán)肅的項(xiàng)目會(huì)構(gòu)建發(fā)行包(有點(diǎn)復(fù)雜,5MB),docker(非常復(fù)雜,100-1000兆字節(jié))或unikernel(誰(shuí)知道有多復(fù)雜)。我甚至在小公司工作過(guò),在那里,將代碼部署到生產(chǎn)環(huán)境是多個(gè)人的全職工作。

相比之下,許多PHP應(yīng)用程序是由FTP客戶機(jī)直接復(fù)制到生產(chǎn)環(huán)境中的。

我所使用的HTML模板方法在今天正經(jīng)的商業(yè)項(xiàng)目中也不常見(jiàn)。通常會(huì)構(gòu)建 GraphQL API,然后通過(guò)前端 Javascript 使用/控制。但PHP更進(jìn)一步:它不是將模板嵌入到編程語(yǔ)言中,而是將編程語(yǔ)言嵌入到模板中。它們是一回事??梢哉f(shuō),PHP只是一種模板語(yǔ)言。

我在上面提到過(guò),令人沮喪的是,包管理可能是一個(gè)相當(dāng)困難的問(wèn)題。PHP現(xiàn)在有包管理器,但是,在黃金時(shí)代,人們只是簡(jiǎn)單地將他們想要使用的文件復(fù)制到他們的項(xiàng)目中。(C 編程仍然以同樣的方式工作——為了體面,這種“技術(shù)”被稱(chēng)為“vendoring”)。

這并不是說(shuō)我認(rèn)為 PHP 是某種潛在的理想語(yǔ)言。我沒(méi)有為 csvbase 編寫(xiě)任何 PHP代碼。但我確實(shí)認(rèn)為 PHP 文化中有些東西值得我們學(xué)習(xí)。捷徑很重要。創(chuàng)意的適應(yīng)度函數(shù)之一是是否有人可以發(fā)布版本 1。

這意味著通過(guò) FileZilla 進(jìn)行部署有一個(gè)合適的規(guī)模:小型項(xiàng)目的規(guī)模。“小”是一個(gè)重要的尺度,因?yàn)殡m然不是每個(gè)項(xiàng)目都會(huì)變大,但每個(gè)項(xiàng)目都是從小開(kāi)始的。

參考鏈接:https://csvbase.com/blog/4

責(zé)任編輯:武曉燕 來(lái)源: 51CTO技術(shù)棧
相關(guān)推薦

2022-08-10 10:36:22

Pythonfor

2022-02-21 12:29:01

for循環(huán)前端

2020-06-04 09:18:52

CTOif-else代碼

2020-02-22 21:45:00

TypeScriptJavaScript瀏覽器

2020-06-15 08:12:51

try catch代碼處理器

2025-01-27 00:30:29

柯里化JavaScript函數(shù)

2025-02-18 15:17:59

2014-07-09 10:56:44

.NET框架

2012-04-05 09:37:48

.NET

2023-04-04 19:14:40

Linux發(fā)行版Alpine

2022-05-17 14:28:42

編程語(yǔ)言Julia代碼

2022-12-05 11:44:49

PrintDebugIceCream

2013-06-20 11:11:00

程序員經(jīng)理

2020-09-01 21:03:10

Springboot格式化方式

2023-02-10 08:58:46

2024-06-18 08:31:33

2022-04-19 07:48:16

JavascriptCSS

2020-05-25 09:20:10

職場(chǎng)技能互聯(lián)網(wǎng)

2020-02-06 11:30:08

代碼JavaScript&&

2013-07-17 14:13:08

產(chǎn)品產(chǎn)品失敗
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)