摘要:可能在項(xiàng)目正式上線的時(shí)候才需要發(fā)布配置單文件入口版本新建一個(gè)和開發(fā)環(huán)境不同的是,入口和出口。相應(yīng)的在的源也要進(jìn)行修改。加載模塊發(fā)布配置多文件模式庫最好就不要打包進(jìn)來。因?yàn)橐话銕於际遣粫?huì)改動(dòng)的。所以這里就要進(jìn)行庫的分離。
react-js開發(fā)環(huán)境
開始一個(gè)項(xiàng)目時(shí)間:2016.3.19-12:29
作者:三月懶驢
基于:react版本:0.14
基于:babel版本:6
相關(guān)代碼:github
npm init安裝webpack
npm install webpack --save-dev項(xiàng)目目錄(demo架構(gòu))
- /app - main.js - component.js - /build - bundle.js (自動(dòng)生成) - index.html - webpack.config.js - package.json設(shè)置webpack.config.js
var path = require("path"); module.exports = { entry:path.resolve(__dirname,"app/main.js"), output:{ path:path.resolve(__dirname,"build"), filename:"bundle.js" } };
在package.json里面預(yù)設(shè)這個(gè)命令去啟動(dòng)打包功能
"build":"webpack"課間練習(xí)
//component.js "use strict" module.exports = function(){ var a = "hello word" return a; }
//main.js "use strict" var component = require("./component.js"); document.body.innnerHTML = component();使用webpack-dev-server:監(jiān)聽代碼自動(dòng)刷新!
npm install webpack-dev-server --save-dev
在package.json里面配置webpack-dev-server
"dev":"webpack-dev-server --devtool eval --progress --colors --hot --content-base build" //webpack-dev-server 創(chuàng)建一個(gè)服務(wù)器8080端口的 //devtool eval --為你的代碼創(chuàng)建源地址,可以代碼快速定位 //progress --顯示進(jìn)度條 //colors --命令行帶顏色 //content-base build --指向設(shè)置的輸出目錄 //一旦啟動(dòng)這個(gè)就會(huì)用服務(wù)器去監(jiān)聽代碼文件的變化,從而每次變化都自動(dòng)合并
啟動(dòng)自動(dòng)刷新功能
//配置在webpack.config.js的入口 entry:[ "webpack/hot/dev-server", "webpack-dev-server/client?http://localhost:8080", path.resolve(__dirname,"app/main.js"); ]課堂練習(xí)
1. npm run dev 啟動(dòng)服務(wù)器 2. 打開瀏覽器->http://localhost:8080 3. 修改一下前面的課堂練習(xí)時(shí)候?qū)懙拇a中的compnent.js的return的東西配置react / babel
//安裝react npm install react --save npm install react-dom --save //安裝babel-loader npm install babel-loader --save-dev npm install babel-core --save-dev npm install babel-preset-es2015 --save-dev //支持ES2015 npm install babel-preset-react --save-dev //支持jsx npm install babel-preset-stage-0 --save-dev //支持ES7 //但是還不夠 npm install babel-polyfill --save /* Polyfilla是一個(gè)英國產(chǎn)品,在美國稱之為Spackling Paste(譯者注:刮墻的,在中國稱為膩?zhàn)?.記住這一點(diǎn)就行:把舊的瀏覽器想象成為一面有了裂縫的墻.這些[polyfills]會(huì)幫助我們把這面墻的裂縫抹平,還我們一個(gè)更好的光滑的墻壁(瀏覽器) */ npm install babel-runtime --save npm install babel-plugin-transform-runtime --save-dev /*減少打包的時(shí)候重復(fù)代碼,以上要注意是放在dev還是非dev上!*/
配置babel
//在入口添加polyfill entry[ "babel-polyfill", "webpack/hot/dev-server", "webpack-dev-server/client?http://localhost:8080", path.resolve(__dirname,"app/main.js") ] //在webpack.config.js的module.exports = {}里面增加 module:{ loaders:[{ "loader":"babel-loader", exclude:[ //在node_modules的文件不被babel理會(huì) path.resolve(__dirname,"node_modules"), ], include:[ //指定app這個(gè)文件里面的采用babel path.resolve(__dirname,"app"), ], test:/.jsx?$/, query:{ plugins:["transform-runtime"], presets:["es2015","stage-0","react"] } }] }課堂測(cè)試
//component.js "use strict" import React from "react" class Component extends React.Component{ render(){ returnHelllo World} }
//main.js "use strict" //注意!這里引入了新的東西 import "babel-polyfill" import React from "react" import {render} from "react-dom" import Component from "./component" let main = function(){ render(加入CSS / iamge / font,document.getElementById("main")); } main();
// 這里先留個(gè)坑!因?yàn)闀簳r(shí)來說還是認(rèn)為外鏈出來適合現(xiàn)在這個(gè)時(shí)代??赡茉陧?xiàng)目正式上線的時(shí)候才需要發(fā)布配置:單文件入口版本!
//新建一個(gè)webpack.production.config.js //in package.json "deploy": "NODE_ENV=production webpack -p --config webpack.production.config.js" //in webpack.production.config.js //和開發(fā)環(huán)境不同的是,入口和出口。相應(yīng)的在HTML的JS源也要進(jìn)行修改。 var path = require("path") var node_module_dir = path.resolve(__dirname,"node_module"); module.exports = { entry:[ "babel-polyfill", path.resolve(__dirname,"app/main.js"), ], output:{ path:path.resolve(__dirname,"build"), filename:"app.js" }, module:{ loaders:[ { loader:"babel-loader", //加載babel模塊 include:[ path.resolve(__dirname,"app"), ], exclude:[ node_module_dir ], test:/.jsx?$/, query:{ plugins:["transform-runtime"], presets:["es2015","stage-0","react"] } }, ] } }發(fā)布配置(多文件模式)
庫最好就不要打包進(jìn)來。因?yàn)橐话銕於际遣粫?huì)改動(dòng)的。所有用戶load一次就好了。所以這里就要進(jìn)行庫的分離。
依舊是:webpack.production.config.js
var path = require("path"); var webpack = require("webpack"); var node_module_dir = path.resolve(__dirname,"node_module"); module.exports = { entry:{ app:[path.resolve(__dirname,"app/main.js"),], react: ["babel-polyfill","react","react-dom"] }, output:{ path:path.resolve(__dirname,"build"), filename:"app.js" }, module:{ loaders:[ { loader:"babel-loader", //加載babel模塊 include:[ path.resolve(__dirname,"app"), ], exclude:[ node_module_dir ], test:/.jsx?$/, query:{ plugins:["transform-runtime"], presets:["es2015","stage-0","react"] } }, ] }, plugins: [ new webpack.optimize.CommonsChunkPlugin("react", "react.js") ] }
預(yù)計(jì)學(xué)習(xí)搭建時(shí)間:1小時(shí)!
恭喜你!全部課程完成,接下來的話,我們就要開始react的課程了!本課程如果還有什么不懂的話,可以在評(píng)論中進(jìn)行討論。
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/79093.html
摘要:使用包管理工具,基于構(gòu)建工具,搭建開發(fā)環(huán)境由于一些軟件安裝跟系統(tǒng)環(huán)境相關(guān),故這里查看本文檔,需要根據(jù)自己的系統(tǒng)環(huán)境,選擇相對(duì)應(yīng)的系統(tǒng)版本。 使用Yarn包管理工具,基于Webpack構(gòu)建工具,搭建React開發(fā)環(huán)境 showImg(https://segmentfault.com/img/remote/1460000019833533?w=560&h=310); 由于一些軟件安裝跟系統(tǒng)...
摘要:在這篇文章中我們開始利用我們之前所學(xué)搭建一個(gè)簡易的開發(fā)環(huán)境,用以鞏固我們之前學(xué)習(xí)的知識(shí)。 文章首發(fā)于我的github及個(gè)人博客,github請(qǐng)看https://github.com/huruji/blo...,轉(zhuǎn)載請(qǐng)注明出處。 在這篇文章中我們開始利用我們之前所學(xué)搭建一個(gè)簡易的React開發(fā)環(huán)境,用以鞏固我們之前學(xué)習(xí)的Webpack知識(shí)。首先我們需要明確這次開發(fā)環(huán)境需要達(dá)到的效果:1、...
摘要:當(dāng)屬性是一個(gè)回調(diào)函數(shù)時(shí),函數(shù)接收底層元素或類實(shí)例取決于元素的類型作為參數(shù)。 手挽手帶你學(xué)React入門第一期,帶你熟悉React的語法規(guī)則,消除對(duì)JSX的恐懼感,由于現(xiàn)在開發(fā)中都是使用ES6語法開發(fā)React,所以這次也使用ES6的模式進(jìn)行教學(xué),如果大家對(duì)ES6不熟悉的話,先去看看class相關(guān)內(nèi)容吧,這里我也慢慢帶大家一步一步學(xué)會(huì)React。 視頻教程 視頻教程可移步我的個(gè)人博客:h...
摘要:的配置其中就不多說會(huì)解決更改組件的時(shí)熱更新直接刷新頁面的問題。 工欲善其事,必先利其器。單頁面應(yīng)用的開發(fā)和生產(chǎn)環(huán)境涉及文件的編譯、壓縮、打包、合并等,目前前端最流行的莫過于 webpack 。為了深入了解 webpack 以及其相關(guān)插件,我們決定不采用腳手架,自己來搭建基于 webpack 的開發(fā)和生產(chǎn)環(huán)境。 基礎(chǔ)環(huán)境 nodejs的安裝: 移步官網(wǎng) 建議使用nvm來管理nodejs...
摘要:官方文檔中文翻譯構(gòu)建用戶界面的庫。官方文檔建議學(xué)習(xí)時(shí)以官方文檔為準(zhǔn),中文翻譯或者第三方作者的教程可以幫助你理清思路會(huì)用到的重要知識(shí)點(diǎn)我也會(huì)進(jìn)行簡明的解釋,如遇到錯(cuò)誤或者不理解的內(nèi)容,歡迎實(shí)時(shí)指出。 前言 前面提到前端大統(tǒng)一的概念,如果感興趣,歡迎說說自己的看法,點(diǎn)擊前往。Web前端框架層出不窮,不可能面面俱到,這里給個(gè)小建議: 如果對(duì)Weex App感興趣,應(yīng)該選擇vue框架; 如果...
閱讀 2347·2021-11-15 11:38
閱讀 3557·2021-09-22 15:16
閱讀 1200·2021-09-10 11:11
閱讀 3170·2021-09-10 10:51
閱讀 2950·2019-08-30 15:56
閱讀 2789·2019-08-30 15:44
閱讀 3194·2019-08-28 18:28
閱讀 3533·2019-08-26 13:36