成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

react基于webpack和Babel 6上的開發(fā)環(huán)境搭建

callmewhy / 1677人閱讀

摘要:可能在項(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)境

時(shí)間:2016.3.19-12:29
作者:三月懶驢
基于:react版本:0.14
基于:babel版本:6
相關(guān)代碼:github

開始一個(gè)項(xiàng)目
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(){
        return 
Helllo 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(,document.getElementById("main"));
}
main();
加入CSS / iamge / font
// 這里先留個(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

相關(guān)文章

  • 構(gòu)建React開發(fā)環(huán)境

    摘要:使用包管理工具,基于構(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)...

    yck 評(píng)論0 收藏0
  • Webpack系列——手把手教你使用Webpack搭建簡易的React開發(fā)環(huán)境

    摘要:在這篇文章中我們開始利用我們之前所學(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、...

    cucumber 評(píng)論0 收藏0
  • 手挽手帶你學(xué)React:一檔 React環(huán)境搭建,語法規(guī)則,基礎(chǔ)使用

    摘要:當(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...

    BicycleWarrior 評(píng)論0 收藏0
  • 【單頁面博客從前端到后端】環(huán)境搭建

    摘要:的配置其中就不多說會(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...

    wizChen 評(píng)論0 收藏0
  • React項(xiàng)目實(shí)戰(zhàn):環(huán)境搭建

    摘要:官方文檔中文翻譯構(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框架; 如果...

    cnio 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<