摘要:一什么是是一個前端的模塊管理工具,以下是的官網,一進入官網可以看到下面這張大圖這張圖基本上解釋了是用來干嘛的,將一些相互依賴的模塊文件,打包成一個或多個文件,減少請求次數,提升性能。希望這篇文章可以幫助大家入門。
(一)什么是Webpack
Webpack是一個前端的模塊管理工具(module bundler),以下是webpack的官網:http://webpack.github.io/,一進入官網可以看到下面這張大圖:
這張圖基本上解釋了webpack是用來干嘛的,將一些相互依賴的模塊(文件),打包成一個或多個js文件,減少http請求次數,提升性能。這些相互依賴的模塊可以是圖片、字體、coffee文件、樣式文件、less文件等。
具體怎么用呢?接下來我將用一個例子來說明:
(二)一個Webpack+Angular的例子 1.先看下目錄結構 2.安裝Webpack及其他組件安裝Webpack之前建議先安裝Node.js,然后采用npm的方式來安裝Webpack:
npm install webpack -g
因為要用到angular,所以要安裝angular:
npm install angular
還要安裝一系列加載器(loader):
npm install style-loader css-loader url-loader sass-loader raw-loader
注意:除了webpack是全局安裝之外,其他組件都是安裝在app文件夾下面,會自動生成node_modules文件夾。
3.配置文件webpack.config.js1 module.exports = { 2 context: __dirname + "/app",//上下文 3 entry: "./index.js",//入口文件 4 output: {//輸出文件 5 path: __dirname + "/app", 6 filename: "./bundle.js" 7 }, 8 module: { 9 loaders: [//加載器 10 {test: /.html$/, loader: "raw"}, 11 {test: /.css$/, loader: "style!css"}, 12 {test: /.scss$/, loader: "style!css!sass"}, 13 {test: /.(png|jpg|ttf)$/, loader: "url?limit=8192"} 14 ] 15 } 16 };4.入口文件index.js
1 var angular = require("angular");//引入angular 2 var ngModule = angular.module("app",[]);//定義一個angular模塊 3 require("./directives/hello-world/hello-world.js")(ngModule);//引入指令(directive)文件 4 require("./css/style.css");//引入樣式文件
require用于引入外部模塊(可以是對象,可以是函數,可以是css樣式,可以是html頁面等)
5.主頁面index.html1 2 3 4 5Angular with Webpacktitle> 6 7 8Angular + Webpack
910 11 12
可以看到主頁面是非常干凈清爽的,只引入了一個輸出文件bundle.js,然后html標簽里加了ng-app="app"。
6.指令文件hello-world.js1 module.exports = function(ngModule) { 2 ngModule.directive("helloWorld", helloWorldFn);//定義指令,對應頁面中的 3 require("./hello-world.scss"); 4 function helloWorldFn() { 5 return { 6 restrict: "E",//元素(element) 7 scope: {}, 8 template: require("./hello-world.html"),//模板 9 //templateUrl: "directives/hello-world/hello-world.html", 10 controllerAs: "vm",// <=> $scope.vm = {greeting: "你好,我是卡哥"} 11 controller: function () { 12 var vm = this; 13 vm.greeting = "你好,我是卡哥,很高興見到你"; 14 } 15 } 16 } 17 }
module.exports用于將模塊(文件)作為一個接口(一般是一個函數)暴露給外部。
7.其他文件(style.css、hello-world.html、hello-world.scss)1 @font-face{ 2 font-family: "maozedong"; 3 src: url(../fonts/maozedong.ttf); 4 } 5 body{ 6 background: url(../images/longmao.jpg) yellowgreen; 7 font-size: 24pt; 8 color: #fff; 9 font-family: "maozedong"; 10 }
12 {{vm.greeting}} 3
1 .hello-world { 2 color: red; 3 border: 1px solid green; 4 }8.編譯和運行
在命令行工具中輸入:webpack,即可編譯,這時我們會遇到第一個坑:
這個錯誤的關鍵行在"You may need an appropriate loader to handle the file type",大概意思就是你的加載器(loader)不正確,可是我們明明安裝上了所有的加載器啊,也在配置文件中引用了呀,我在網上找了很久都沒找到問題所在,后來還是一位細心的同事幫我解決這個問題的,原來問題出在配置文件中的"module"下的"loader"應該是"loaders",就因為少了一個"s",浪費我一上午的時間。
修改過來之后,編譯通過了,我們在瀏覽器中打開主頁面index.html,這時遇到了第二個坑:
大概意思是你跨域了,不能加載hello-world.html這個文件,問題出在指令文件hello-world.js中的引用模板地址的代碼:
templateUrl: "directives/hello-world/hello-world.html"
在網上搜到一個解決辦法,就是使用Node.js自帶的的http-server,以下是server.js的代碼:
使用之前要先安裝express:npm install express,然后在命令行工具中輸入node server.js開啟服務,這時在瀏覽器中輸入:localhost:8000/index.html即可訪問主頁面。
另外一個方法是用require的方式引入hello-world.html:
template: require("./hello-world.html")
(三)補充(1)編譯的命令"webpack"后面可以加參數,如:
"webpack -p"表示對打包后的文件進行壓縮
"webpack -w"表示實時進行打包更新
"webpack -d"表示提供source map,方便調試
(2)webpack-dev-server可以提供實時監視文件變化的功能,使用之前先安裝webpack-dev-server:
npm install webpack-dev-server -g
然后在命令行中輸入:webpack-dev-server --progress --colors,顯示以下結果:
這時在瀏覽器中輸入:localhost:8080(localhost:8080/webpack-dev-server),你對靜態資源的任何改動都會直接反映到主頁面中。
--------------------------------------------------------- 華麗的分割線 ------------------------------------------------
總結:這是一個Webpack+Angular的典型例子,包含了最基本的打包js文件、css文件、scss文件、圖片、字體的方法。通過這幾天對Webpack的學習,發現有關Webpack的資料確實是非常少的,百度百科和維基百科上甚至都沒有這個詞條。希望這篇文章可以幫助大家入門。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/78576.html
摘要:所以說的模塊機制沒有解決文件依賴關系和文件異步加載的問題。大部分團隊還是停留在第二第三階段,每個階段的實現都有很多種選擇。希望這篇文章能夠激起大家永遠保持積極向前追求完美代碼的心,不僅對自己的成長也會對公司帶來無限的價值。 本篇技術博客來自有著化腐朽為神奇能力的,Worktile 技術牛人Web 總監 @徐海峰 大神的分享~滿滿的干貨,你值得擁有! Worktile 的前端構建之路 2...
學習的過程中收藏了這些優秀教程和的項目,希望對你有幫助。 github地址, 有不錯的就更新 官方文檔 中文指南 初級教程 webpack-howto 作者:Pete Hunt Webpack 入門指迷 作者:題葉 webpack-demos 作者:ruanyf 一小時包教會 —— webpack 入門指南 作者:VaJoy Larn webpack 入門及實踐 作者:...
摘要:所以它在某些程度上,跟的功能有些相同。嚴格上講,模塊化不是他強調的東西,他旨在規范前端開發流程。更是明顯強調模塊化開發,而那些文件壓縮合并預處理等功能,不過是他附帶的功能。 1. webpack 是什么? showImg(https://segmentfault.com/img/remote/1460000012293461); 先來說一下 webpack 是什么。 webpack 的...
摘要:基于構建的工程一篇現在都已經出到的版本了,可我對它的認識還是停留在的版本。然后是寫啟動的命令行,也就是上面的這樣寫的意思是,當你輸入你的命令名字就會讓執行你對應命令的語句。我們首先把基本的配置引進來。 基于webpack構建的angular 1.x 工程(一)webpack篇 ??現在AngularJS都已經出到4.x的版本了,可我對它的認識還是停留在1.x的版本。 ??之前用它是為...
閱讀 3133·2021-09-22 15:50
閱讀 3334·2021-09-10 10:51
閱讀 3148·2019-08-29 17:10
閱讀 2923·2019-08-26 12:14
閱讀 1841·2019-08-26 12:00
閱讀 947·2019-08-26 11:44
閱讀 657·2019-08-26 11:44
閱讀 2823·2019-08-26 11:41