精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

寫給后端看的前端技術——webpack(上)

開發 開發工具
我決定用webpack作為學習前端的第一步,一方面是由于“Build工具”幾乎是學習前端的第一道門檻;另一方面它已經“千秋萬代一統江湖”了所以請無視——gulp、grunt之類的吧。

不懂“前端”說的virtual dom、ReactJS、Vue、Angularjs這一大堆東西,也不懂前端說的ES6的優雅,也不知道為啥我用Bootstrap、jQuery就得“剁手”。世界上總得有一篇文章是寫給后端工程師看的,后端寫給后端看的,不裝逼,認認真真。

我決定用webpack作為學習前端的第一步,一方面是由于“Build工具”幾乎是學習前端的第一道門檻;另一方面它已經“千秋萬代一統江湖”了所以請無視——gulp、grunt之類的吧。

[[184087]]

一、前端工具鏈和Webpack

工具鏈是前端經常被吐槽的一個梗,我認為這不是前端技術更新太快,而是前端技術通俗易懂——山寨個輪子分分鐘的事情。用別人的工具不如自己做一個——多有面子。(或許這就是“文人相輕”吧)。用一幅圖表示webpack的位置

用一幅圖表示webpack的位置

支撐整個B/S系統技術由三個組成——HTML、CSS、JavaScript。其中JavaScript比較特殊,借助V8引擎它可以被放到服務器端執行這就會Node.js。Node.js之于JavaScript猶如JVM之于Java,它為JavaScript提供了一個“運行環境”,這就給出了一個信號——我們可以用JavaScript做更多事情。

最開始嘗試的是用Node.js寫服務器端,這場運動造就了另一個東西——npm(Node Package Manager),通過npm定義的規范為JavaScript引入了“包”的概念,刺激了社區的發展一時間社區出現了非常豐富的、可以復用的庫(比如,出現了Express之類的Web Framework、甚至是ORM Framework)。

有了Node.js、npm之后進入了“全面造輪子”的時代,各種工具、各種庫、各種場景野蠻生長。其中有一小撮群眾迫切的需要一個“打包工具”。JavaScript代碼、CSS代碼越來越多我們期望能夠有一個工具可以合并JavaScript、合并CSS,如果可能捎帶“壓縮”一下大小。當然這種事情用Python、Java都可以做到問題是——“用別人家的語言多丟人啊”,我們現在有了Node.js分分鐘自己寫一個。于是就有了gulp、grunt、webpack之類的,當然這些工具功能更多(比如合并小圖片、作為開發服務器)但是它本質上還是一個“打包工具”(Python的PIP、Java的Maven)。

二、npm

就像前面說的那樣,你使用webpack必須安裝node.js——它是用JavaScript寫的一個工具所以必須要有運行環境。完整完node.js后你會驚喜的發現多了一個npm(恩,買一送一)——畢竟現在一個語言不帶上“包管理”都不好意思說自己是“現代編程語言了”。

首先我們需要一個符合npm標準的工程

符合npm標準的工程

npm的規范很簡單,只要你有一個package.json的配置文件就可以了,我們通過npm init來幫我們生成了一個。接下來用編輯器打開package.json就行了。

你可能已經猜出了了很多東西(沒猜到?請瀏覽npmjs.com上的package.json來理解每個配置項的含義)。我們重點關注script,它可以讓我們利用npm執行命令行(Shell),我來修改一下代碼

利用npm執行命令行(Shell)

然后執行

npm的日志

以“>”開頭的輸出是npm的日志,最后的一句話才是“echo”執行的結果。

三、初探webpack

1. 前期準備

為了便于實驗我準備了兩個文件——index.js、index.html

index.js、index.html

index.html

index.html

index.js

index.js

用瀏覽器打開index.html就可以看到彈出的對話框了。

2. 初探Webpack

webpack是npm的一個標準庫,所以通過npm安裝它,指定--save-dev參數會自動修改package.json添加依賴(npm會在當前目錄創建一個node_modules文件夾,webpack和它的依賴都放在這里,你如果膽子大進去看一下目錄吧。恩,就是這么神奇。。就是這么多依賴~~~~)。

webpack是npm的一個標準庫

安裝完成后package.json被添加了webpack的依賴關系。(dev不用猜你也知道了,這是“開發環境”依賴,npm在執行打包的時候不會把它復制到生產環境,也就是說webpack其實是一個“開發工具”。)

webpack的依賴關系

webpack提供了一個命令行腳本路徑是node_modules/webpack/bin/webpack.js,我們可以直接在shell中執行這個js文件。(打開它你會發現第一行是#!/usr/bin/env node,所以它其實是由NodeJS執行的)現在讓webpack幫我們“打包”index.js,生成的文件叫bundle.js

bundle.js

修改index.html

修改index.html

程序是正常工作的,以后我們對外發布的時候不再使用main.js而是使用bundle.js。

四、引入jQuery

下面修改代碼,在頁面中放入一個按鈕,通過jQuery綁定按鈕的Click事件,點擊之后彈出Hello。首先需要添加jQuery依賴,通過--save讓npm保存jQuery依賴,這里沒有執行dev所以jQuery會被帶到生產環境

jQuery

index.html

index.html

index.js

index.js

特別解釋一下第一句,這個是JavaScript的“模塊化”。JavaScript語言沒有模塊(或者叫“包”)、類等模塊化的概念這就給大家留下了很多想象空間,nodejs定義了require用來支持模塊化,通過這個語句會自動引入jquery.js文件(讀取node_modules/jquery/package.json中的main字段)——這就是CommonJS。但是NodeJS不能工作在瀏覽器段,于是就有了瀏覽器端的“模塊化”——AMD、CMD之類的。時至今日ES6已經作為JavaScript的新規范被大家接受,它終于引入了模塊化的語法——import xx from xx。

webpack同時支持CommonJS、ES6兩種語法,打包的時候會把所有的JavaScript和相關資源重新組合(比如合并JavaScript文件,合并小圖片,合并CSS),我們可以選擇一次性加載所有JavaScript也可以通過插件分成若干個Chunk加載。

在webpack中兩種語法沒有什么本質區別,我習慣性的會選擇require作為主要的方式,它可以指定完整路徑名非常便于兼容非npm模塊,還可以引入css文件、圖片,寫法也更加清晰。項目里有ES6的時候我會選擇用import語法。

繼續執行webpack生成build.js,這次我們會看到一些關于jquery的信息。

jquery的信息。

打開頁面刷新、點擊、程序是正常工作的,打開buildle.js看一下是不是發現webpack把jquery.js和我們的代碼合并到一起了?

4. 自動化

上面我們編輯完代碼之后還需要自己執行一下webpack,刷新頁面。我們希望編輯index.js后希望可以自動觸發webpack編譯輸出dist/build.js,為了實現這個必須引入兩個東西

  • webpack.config配置文件
  • webpack-dev-server插件

一直來我們都是通過命令行指定“源JavaScript”和“目標JavaScript”,現實中我們一般是通過配置文件指定的就是——webpack.config.js

webpack.config.js

現在執行node_modules/webpack/bin/webpack.js不加參數,webpack就會使用這個配置文件了。每次都輸入這么長的名字也是比較煩的,我們可以通過npm來調用webpack。仔細想想npm中的scripts定義的都是shell命令,所以我們可以修改成

npm執行命令行的時候會把node_modules下的一些bin目錄(比如 webpack的是node_modules/webpack/bin)加入到PATH環境變量中而且允許以.js結尾的文件不指定后綴名。所以build這里我們直接寫一個webpack就行了。(webpack其實是寫成node_modules/webpack/bin/webpack.js的縮寫)

通過npm 執行build

通過npm 執行build

我們希望webpack可以自動“檢查”index.js,發現更新后可以自動編譯。這時候就必須安裝web-dev-server這個插件了

web-dev-server

修改webpack.config.js

修改webpack.config.js

新增了devServer部分,publicPath指定了“發布路徑”。webpack-dev-server會檢測index.js的變化輸出的時候并不是把目標文件寫到硬盤中而是在內存里,此處指定輸出的文件是bundle.js,如果不指定publicPath,我們訪問它的路徑應該是localhost:3000/bundle.js。訪問index.html的路徑是localhost:3000/index.html,而HTML引入的路徑是dist/bundle.js所以此處指定publicPath。(webpack-dev-server輸出路徑就會變成localhost:3000/dist/bundle.js,剛好和html呼應)

修改package.json,引入新的run命令

修改package.json,引入新的run命令

執行npm run build會輸出文件到dist/bundle.js用于發布生產,執行npm run start會執行dev-server,不使用硬盤上的bundle.js用于開發測試。

(你可以已經猜到了webpack-dev-server也有一個bin目錄,它的原理和webpack在script字段中的原理是一樣的)

五、代碼

https://github.com/fireflyc/front-demo/tree/v1

【本文是51CTO專欄作者“邢森”的原創文章,轉載請聯系作者本人獲取授權】

戳這里,看該作者更多好文

責任編輯:趙寧寧 來源: 51CTO.com
相關推薦

2019-09-27 14:33:34

2020-06-22 07:56:15

前端開發技術

2019-07-29 16:05:48

前端DockerNode.js

2020-03-03 15:17:40

進程線程調度

2020-03-01 16:05:08

操作系統文件

2016-01-05 10:30:59

后端程序員緩存原理

2019-11-29 16:25:00

前端正則表達式字符串

2020-03-02 14:49:09

數據分析數據采集數據處理

2019-12-18 10:30:24

前端開發技術

2022-08-08 15:45:44

JavaPromise前端

2020-10-08 18:20:54

前端后端架構

2018-08-03 12:52:51

首頁彈窗iOS

2020-11-19 09:00:00

技術債開發工程

2020-03-04 15:44:36

數據分析統計分析數據模型

2021-08-30 11:29:36

Webpack H5 C3

2022-09-05 14:45:56

前端K8S

2020-07-29 08:26:40

Webpack前端模塊

2021-05-27 05:22:28

前端引擎平臺

2023-04-10 15:14:03

2015-10-10 10:01:28

前端模塊化webpack
點贊
收藏

51CTO技術棧公眾號

欧美成人r级一区二区三区| 久久婷婷色综合| 麻豆一区二区在线观看| 一区二区三区人妻| 91黄页在线观看| 久久精品这里都是精品| 成人精品在线观看| 欧美三级韩国三级日本三斤在线观看| 视频一区欧美| 日韩三级视频在线看| 精品中文字幕av| 免费黄网站在线播放| 成人综合在线观看| 国产精品女人久久久久久| 全程偷拍露脸中年夫妇| 国产成人精品三级高清久久91| 51精品秘密在线观看| 少妇人妻大乳在线视频| 1769视频在线播放免费观看| 成人久久视频在线观看| 国产精品久久久久久久久| 激情综合五月网| av一区二区在线播放| 精品久久人人做人人爱| 另类小说第一页| а√天堂中文在线资源8| 国产精品久久久久久亚洲毛片| 国产精品久久国产三级国电话系列 | 国产成人精品亚洲| 亚洲视频碰碰| 久久成人国产精品| 中字幕一区二区三区乱码| 哺乳一区二区三区中文视频| 欧美精品丝袜中出| 欧美一级片中文字幕| av伦理在线| 夜夜夜精品看看| 一区视频二区视频| 黄色毛片在线看| 99久久婷婷国产综合精品| www日韩av| 国产美女精品视频国产| 青青草国产精品97视觉盛宴| 热草久综合在线| 国产精品成人av久久| 综合久久精品| 久久视频在线播放| 亚洲毛片亚洲毛片亚洲毛片| 九九久久成人| 亚洲人成电影网站色xx| 一级特黄a大片免费| 精品国产一区二区三区不卡蜜臂| 欧美大肚乱孕交hd孕妇| 天堂中文av在线| 99精品国自产在线| 欧美天堂亚洲电影院在线播放| 国产99久久九九精品无码| 538在线视频| 亚洲一区二区综合| 成年女人18级毛片毛片免费| 羞羞的网站在线观看| 亚洲摸摸操操av| 久久国产精品免费观看| 555www成人网| jjzz黄色片| 欧美视频二区欧美影视| 日韩欧美综合在线| xxxx国产视频| 成人av资源网址| 亚洲二区中文字幕| 国产精品久久久久久久无码| 欧美一区二区三区红桃小说| 亚洲精品国产suv| 亚洲乱码国产乱码精品精大量| 日韩欧美四区| 国产亚洲一区二区精品| 最新日韩免费视频| 亚洲精彩视频| 欧美黑人巨大xxx极品| 日韩免费不卡视频| 免播放器亚洲| 国产精品自拍偷拍| 成人av无码一区二区三区| 成人自拍视频在线| 久久99热只有频精品91密拍| 欧美一区二区视频| 国产欧美日韩亚州综合| 在线观看欧美一区| 黑人极品ⅴideos精品欧美棵| 一卡二卡欧美日韩| 国产日产欧美视频| 韩日精品一区| 欧美一区二区成人| 双性尿奴穿贞c带憋尿| 欧美日韩水蜜桃| 裸体女人亚洲精品一区| 黄色激情视频在线观看| 三级成人在线视频| 亚洲字幕一区二区| 你懂的免费在线观看视频网站| 日本一区二区免费在线观看视频| 特级黄色录像片| 蜜桃av.网站在线观看| 欧美日韩欧美一区二区| 国产免费无码一区二区| 久久99久久人婷婷精品综合 | 大地资源网3页在线观看| 亚洲综合色噜噜狠狠| 97公开免费视频| 97久久综合精品久久久综合| 亚洲色图18p| 黄色一级免费视频| 日本成人在线不卡视频| 97在线中文字幕| 国产高清av在线| 亚洲一二三四区不卡| 天堂中文视频在线| 激情亚洲另类图片区小说区| 最好看的2019年中文视频| 日本少妇xxxx动漫| 精彩视频一区二区三区| 久久天堂国产精品| 亚洲男同gay网站| 欧美日韩高清一区二区不卡| 青青草视频播放| 欧美片第1页综合| 国产精品久久视频| 嫩草精品影院| 午夜私人影院久久久久| www.色.com| 日韩精品诱惑一区?区三区| 7777精品久久久久久| 国产色视频在线| 国产精品国产精品国产专区不片| 欧美视频在线播放一区| 一本色道69色精品综合久久| 中文字幕在线看视频国产欧美在线看完整 | 91视频在线免费| 欧美女激情福利| 91香蕉国产在线观看| 成黄免费在线| 一本色道久久综合亚洲91 | 久久久国际精品| 日韩在线视频在线观看| 国产精品chinese在线观看| 欧美成人中文字幕| 国产黄色片免费| 亚洲品质自拍视频| 人妻换人妻仑乱| 欧美一区二区三区久久精品茉莉花| 国产欧美日韩专区发布| 在线免费观看黄| 正在播放一区二区| 中文字幕影音先锋| 高清不卡一区二区在线| 久久男人资源站| 久久精品国产亚洲blacked| 韩剧1988免费观看全集| 午夜视频福利在线| 欧美视频裸体精品| 天天躁夜夜躁狠狠是什么心态| 久久资源在线| 亚洲精品国产精品久久 | 成人动漫在线视频| 国产理论电影在线| 亚洲国产精品久久久久秋霞蜜臀| 久久久国产高清| 国产区在线观看成人精品| 精品久久久久久中文字幕2017| 精品不卡一区| 成人免费网站在线观看| 伊人春色在线观看| 亚洲精品国产电影| 波多野结衣网站| 国产精品电影一区二区三区| 日韩精品aaa| 欧美特黄一区| 精品视频第一区| 欧美1—12sexvideos| 日韩精品视频免费| 五月婷婷激情五月| 亚洲欧洲在线观看av| 亚洲av无码久久精品色欲| 亚洲精选国产| 你懂的网址一区二区三区| 欧美xx视频| 日韩在线观看免费高清完整版| xxxx国产精品| 岛国av一区二区三区| 在哪里可以看毛片| 国产自产2019最新不卡| 午夜精品电影在线观看| 中文字幕av一区二区三区四区| 午夜精品久久久99热福利| 毛片免费在线观看| 在线不卡免费欧美| 亚洲第一在线播放| 国产精品免费看片| 美女流白浆视频| 午夜在线精品偷拍| 亚洲.欧美.日本.国产综合在线 | 国产综合视频在线观看| 在线三级电影| 在线播放日韩专区| а√中文在线资源库| 欧美性色视频在线| 国产黄a三级三级| 2014亚洲片线观看视频免费| 杨幂毛片午夜性生毛片| 欧美日本久久| 日韩精品久久一区| 蜜桃精品一区二区三区| 国产精品成人在线| 国产美女一区视频| 日韩在线中文视频| 丰满熟女一区二区三区| 欧美欧美午夜aⅴ在线观看| 久久久久久久福利| 国产日韩欧美精品在线| 一区二区三区欧美精品| 奇米综合一区二区三区精品视频| www成人免费| 日韩久久视频| 国产精选一区二区| av日韩久久| 国产成人亚洲综合91| 宅男在线观看免费高清网站| 中文字幕免费精品一区高清| 亚洲人成色777777老人头| 欧美日韩高清一区二区三区| 国产在线观看第一页| 亚洲超碰97人人做人人爱| 成人做爰视频网站| 国产亚洲综合色| 精品人妻一区二区三区视频| 国产不卡一区视频| 青青草久久伊人| 日产国产欧美视频一区精品| 青青青在线播放| 999亚洲国产精| 日韩视频一二三| 99re66热这里只有精品8| 日韩欧美亚洲v片| 日韩黄色网络| 国产一区二区在线网站| 91亚洲无吗| 国产精品久久久久久久久婷婷| 四虎视频在线精品免费网址| 国产成人精品久久| 美女av在线免费看| 国产成人av在线播放| 桃色av一区二区| 亚洲91精品在线观看| 女囚岛在线观看| 午夜精品一区二区三区在线| 性欧美ⅴideo另类hd| 久久综合网hezyo| 福利小视频在线观看| 日韩在线观看免费高清| 男人的天堂在线视频免费观看 | 国产69视频在线观看| 国产成人免费在线| 亚洲区 欧美区| 成人午夜在线播放| 91传媒理伦片在线观看| 国产91综合网| 美女露出粉嫩尿囗让男人桶| aa级大片欧美| 久久精品老司机| 国产欧美一二三区| 永久av免费网站| 亚洲国产精品一区二区www| 久久精品视频日本| 亚洲成人资源网| 日干夜干天天干| 在线观看视频一区二区| 欧美激情一区二区三区免费观看 | 国产乱色精品成人免费视频| 91麻豆精品国产91久久久使用方法| 国产精品久久久久精| 欧美一区二区三区公司| 天天躁日日躁狠狠躁喷水| 日韩精品亚洲精品| 户外极限露出调教在线视频| 日韩在线免费高清视频| av电影在线免费| 日韩免费在线免费观看| 欧美aaa级| 好吊色欧美一区二区三区视频 | 精品国产欧美一区二区| 国产又爽又黄网站亚洲视频123| 亚洲毛片一区二区| 国产成人高清精品| 91国语精品自产拍在线观看性色| 欧美粗大gay| 国产精品国产精品| 精品一区亚洲| avove在线观看| 国产农村妇女毛片精品久久莱园子| 免费无码国产v片在线观看| 久久国产乱子精品免费女| 在线免费播放av| 国产精品素人视频| 精品午夜福利在线观看| 欧美日韩国产综合久久| 人妻夜夜爽天天爽| 在线成人一区二区| 欧美jizzhd69巨大| 日韩av电影院| 亚洲不卡视频| 翔田千里亚洲一二三区| 亚洲影音先锋| √天堂资源在线| 国产亚洲欧美在线| 日干夜干天天干| 91精品国产综合久久婷婷香蕉| 天天操天天干天天操| 久久精品国产2020观看福利| 国产精品13p| 成人免费淫片视频软件| 国产精品免费99久久久| h无码动漫在线观看| 久久精品免费看| 催眠调教后宫乱淫校园| 一区二区三区欧美视频| 国产午夜无码视频在线观看| 欧美变态tickling挠脚心| 国产调教视频在线观看| 欧美重口另类videos人妖| 国产精品日本一区二区三区在线 | 国产精品美女久久久久久久久 | 国产欧美熟妇另类久久久| 日韩精品中文字幕视频在线| 色女人在线视频| 亚洲精品欧美一区二区三区| 欧美色网址大全| 久久美女福利视频| xnxx国产精品| 国产精品18p| 日韩欧美电影一区| 免费看电影在线| 97超碰人人看人人| 天天射成人网| 激情久久综合网| 中文字幕一区二区三区乱码在线 | 国产一区二区精品在线| 一级欧洲+日本+国产| 91亚洲精品久久久蜜桃借种| 日本一二三不卡| 国产 日韩 欧美 在线| 日韩的一区二区| 美女av在线免费看| 狠狠色噜噜狠狠狠狠色吗综合| 国产日韩亚洲| 女同性恋一区二区三区| 亚洲第一久久影院| | 久久国产精品免费视频| 日韩午夜电影免费看| 日本一本草久p| 国产成人综合在线观看| 全网免费在线播放视频入口| 精品久久久久久久人人人人传媒 | 成年人在线看片| 国产精品色哟哟| 91精品国产乱码久久| 欧美成人午夜激情在线| 高清一区二区| a级黄色片免费| www国产成人| 欧美三级网站在线观看| 国产亚洲欧美一区| 亚洲色图图片| 亚洲理论电影在线观看| 成人久久18免费网站麻豆| 精品国产免费观看| 亚洲色图50p| 久久gogo国模啪啪裸体| 日韩精品一区二区三区四| 99麻豆久久久国产精品免费| 欧美日韩在线视频播放| 日韩性生活视频| 色悠久久久久综合先锋影音下载| 国产欧美日韩小视频| 成人爱爱电影网址| 久久精品视频5| 日韩视频免费看| 精品素人av| 在线免费观看av的网站| 亚洲欧美在线高清| 四虎精品成人影院观看地址| 国产精品视频999| 欧美1区免费| 亚洲国产日韩一区无码精品久久久| 色婷婷精品久久二区二区蜜臂av | 国产人妻精品一区二区三| 韩国精品久久久999| 不卡日本视频| 亚洲麻豆一区二区三区| 欧美唯美清纯偷拍|