摘要:介紹簡單點來說就就是一個配置文件,所有的魔力都是在這一個文件中發生的。一安裝全局安裝在文件夾里面也需要安裝這個是在你根目錄下進行的全局安裝記得加太慢,推薦用的鏡像安裝方法一樣。二創建項目新建文件夾命令行輸入命令。
介紹:
webpack簡單點來說就就是一個配置文件,所有的魔力都是在這一個文件中發生的。 這個配置文件主要分為三大塊
entry 入口文件 讓webpack用哪個文件作為項目的入口
output 出口 讓webpack把處理完成的文件放在哪里
module 模塊 要用什么不同的模塊來處理各種類型的文件
下面我們就一步一步來新建一個簡單的項目,話不多講,該懂的自行百度,這里只負責讓你自己的webpack跑起來。
(一)安裝
全局安裝webpack
npm install -g webpack
在文件夾里面也需要安裝webpack
npm install webpack
這個是在你根目錄下進行的全局安裝記得加-g,npm 太慢,推薦用npm的鏡像cnpm 安裝方法一樣。
(二)創建項目
新建文件夾命令行輸入命令。 輸入npm init后一路回車,看需要自己更改
cd study-webpack npm init
{ "name": "study-webpack2.0", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo "Error: no test specified" && exit 1" }, "author": "", "license": "ISC" }
此時會生成一個package.json 然后
npm install
安裝基本依賴的模板
(三)建立項目基本目錄結構
現在項目里面就有一個package.json, 我們多加一點東西,慢慢豐富它的內容。
/app index.js sub.js package.json webpack.config.js
添加了兩個js文件,添加了最重要的webpack的配置文件,我們還是從非常簡單的hello world開始玩起,webpack原生直接支持AMD和CommonJS兩種格式
JS代碼
sub.js
//我們這里使用CommonJS的風格 function generateText() { var element = document.createElement("h2"); element.innerHTML = "Hello h2 world"; return element; } module.exports = generateText;
index.js
var sub = require("./sub"); var app = document.createElement("div"); app.innerHTML = "Hello World
"; app.appendChild(sub()); document.body.appendChild(app);
代碼寫完了,完成一個很簡單的功能,新建一個多帶帶的module,并且在另外一個module里面引用他,最后會在頁面里面輸出兩個標題。
配置webpack
現在開始配置webpack,目標是把這兩個js文件合并成一個文件. 我們可以自己在build文件夾里面手動建一個index.html文件夾,然后再把合并以后的js引用在里面,但是這樣有些麻煩,所以我們這里安裝一個plugin,可以自動快速的幫我們生成HTML。
npm install html-webpack-plugin --save-dev
在有了這個插件的前提下 開始寫webpack.config.js文件
var path = require("path"); var HtmlwebpackPlugin = require("html-webpack-plugin"); //定義了一些文件夾的路徑 var ROOT_PATH = path.resolve(__dirname); var APP_PATH = path.resolve(ROOT_PATH, "app"); var BUILD_PATH = path.resolve(ROOT_PATH, "build"); module.exports = { //項目的文件夾 可以直接用文件夾名稱 默認會找index.js 也可以確定是哪個文件名字 entry: APP_PATH, //輸出的文件名 合并以后的js會命名為bundle.js output: { path: BUILD_PATH, filename: "bundle.js" }, //添加我們的插件 會自動生成一個html文件 plugins: [ new HtmlwebpackPlugin({ title: "Hello World app" }) ] };
然后在項目根目錄運行指令,此時會生成一個build文件夾里面有bundle.js和index.html
webpack //這個是命令行命令
配置webpack-dev-server
上面任務雖然完成了,但是我們要不斷運行程序然后查看頁面,所以最好新建一個開發服務器,可以serve我們pack以后的代碼,并且當代碼更新的時候自動刷新瀏覽器。
安裝webpack-dev-server
npm install webpack-dev-server --save-dev
安裝完畢后 在webpack.config.js中添加配置
module.exports = { .... devServer: { historyApiFallback: true, hot: true, inline: true }, ...
}
然后再package.json里面配置一下運行的命令,npm支持自定義一些命令
... "scripts": { "start": "webpack-dev-server --hot --inline" }, ...
好了,萬事具備了,在項目根目錄下輸入npm start,一堆花花綠綠的信息后server已經起來了,在瀏覽器里面輸入http://localhost:8080 發現偉大的hello world出現了,在js里面隨便修改一些輸出然后保存, boom!瀏覽器自動刷新,新的結果出現了。
關于一些文件依賴解釋:
紅色框框內的東西是你運行一些文件所需要的配置,記得得在webpack.config.js里面的module下加哦,比如你需要使用sass
{ test: /.scss$/, loaders: ["style-loader","css-loader","sass-loader"], include: APP_PATH }, 命令行得安裝這些相對應的模板 npm install style-loader css-loader sass-loader --save-dev也可以分開寫 提醒:要使用es6必須全局安裝babel-core;使用sass也必須全局安裝sass,先裝ruby;
拓展
下面附上完整項目截圖代碼(es6):
項目目錄
npm-debug.log 是調試日志文件,報錯可以參考這個文件改錯
index.js
import "./main.css"; import "./main.scss"; import generateText from "./sub"; import $ from "jquery"; import moment from "moment"; let app = document.createElement("div"); const myPromise = Promise.resolve(42); myPromise.then((number) => { $("body").append("look at me! now is " + number + " now is " + moment().format() + "
") }) app.innerHTML = "Hello World!!
"; document.body.appendChild(app); app.appendChild(generateText());
sub.js
export default function() { var element = document.createElement("h2"); element.innerHTML = "Hello h2 world hahaha"; return element; }
main.css
main.scss
variables.scss
build 文件夾下的東西會自動生成,我就不放過來了
package.json
{ "name": "aaa", "version": "1.0.0", "description": "", "main": "webpack.config.js", "scripts": { "test": "echo "Error: no test specified" && exit 1", "start": "webpack-dev-server --hot --inline" }, "author": "", "license": "ISC", "devDependencies": { "babel-loader": "^6.3.2", "babel-preset-es2015": "^6.22.0", "css-loader": "^0.26.2", "file-loader": "^0.10.1", "html-webpack-plugin": "^2.28.0", "jquery": "^3.1.1", "moment": "^2.17.1", "node-sass": "^4.5.0", "sass-loader": "^6.0.2", "style-loader": "^0.13.2", "url-loader": "^0.5.8", "webpack": "^2.2.1", "webpack-dev-server": "^2.4.1" } }
webpack.config.js
var path = require("path"); var HtmlwebpackPlugin = require("html-webpack-plugin"); //定義了一些文件夾的路徑 var ROOT_PATH = path.resolve(__dirname); var APP_PATH = path.resolve(ROOT_PATH, "app"); var BUILD_PATH = path.resolve(ROOT_PATH, "build"); module.exports = { //項目的文件夾 可以直接用文件夾名稱 默認會找index.js 也可以確定是哪個文件名字 entry: APP_PATH, //輸出的文件名 合并以后的js會命名為bundle.js output: { path: BUILD_PATH, filename: "bundle.js" }, //添加我們的插件 會自動生成一個html文件 plugins: [ new HtmlwebpackPlugin({ title: "Hello World app" }) ], devServer: {//webpack-dev-server的配置 historyApiFallback: true, hot: true, inline: true }, module: { loaders: [ { test: /.css$/, loaders: ["style-loader","css-loader"], include: APP_PATH }, { test: /.scss$/, loaders: ["style-loader","css-loader","sass-loader"], include: APP_PATH }, { test: /.(png|jpg)$/, loader: ["url-loader?limit=40000"] }, { test: /.jsx?$/, loader: "babel-loader", include: APP_PATH, query: { presets: ["es2015"] } } ] } };
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/86840.html
摘要:前情提要本人是一個學渣非科班入行年了吧前端東西真的好多啊又不斷更新需要不斷的學學學在去年年底開始我就開始不斷的尋找學習的方法如何更加高效的學習如何才能學的又快又好在這半年來不斷的總結慢慢找到了一些方法和訣竅此文章不是網格布局的教學文章只前情提要 ??本人是一個學渣,非科班入行2年了吧,前端東西真的好多啊,又不斷更新.需要不斷的學學學, showImg(https://user-gold-c...
摘要:很基礎,不喜勿噴轉載注明出處爬蟲實戰項目之鏈家效果圖思路爬蟲究竟是怎么實現的通過訪問要爬取的網站地址,獲得該頁面的文檔內容,找到我們需要保存的數據,進一步查看數據所在的元素節點,他們在某方面一定是有規律的,遵循規律,操作,保存數據。 說明 作為一個前端界的小學生,一直想著自己做一些項目向全棧努力。愁人的是沒有后臺,搜羅之后且學會了nodejs和express寫成本地的接口給前端頁面調用...
摘要:很基礎,不喜勿噴轉載注明出處爬蟲實戰項目之鏈家效果圖思路爬蟲究竟是怎么實現的通過訪問要爬取的網站地址,獲得該頁面的文檔內容,找到我們需要保存的數據,進一步查看數據所在的元素節點,他們在某方面一定是有規律的,遵循規律,操作,保存數據。 說明 作為一個前端界的小學生,一直想著自己做一些項目向全棧努力。愁人的是沒有后臺,搜羅之后且學會了nodejs和express寫成本地的接口給前端頁面調用...
閱讀 745·2021-10-09 09:44
閱讀 2024·2021-09-22 15:54
閱讀 5064·2021-09-22 10:55
閱讀 1445·2019-08-29 18:41
閱讀 781·2019-08-29 11:24
閱讀 2106·2019-08-28 18:20
閱讀 1032·2019-08-26 11:51
閱讀 3052·2019-08-26 11:00