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

資訊專欄INFORMATION COLUMN

React項目實戰(zhàn):環(huán)境搭建

cnio / 3105人閱讀

摘要:官方文檔中文翻譯構建用戶界面的庫。官方文檔建議學習時以官方文檔為準,中文翻譯或者第三方作者的教程可以幫助你理清思路會用到的重要知識點我也會進行簡明的解釋,如遇到錯誤或者不理解的內容,歡迎實時指出。

前言

前面提到前端大統(tǒng)一的概念,如果感興趣,歡迎說說自己的看法,點擊前往。Web前端框架層出不窮,不可能面面俱到,這里給個小建議:

如果對Weex App感興趣,應該選擇vue框架;

如果對React Native App感興趣,應該選擇React.js框架;

本系列文章是React技術棧,Vue技術棧將會在本系列文章結束后陸續(xù)更新。

技術棧

由于本系列的文章是項目實戰(zhàn),需要有相關的技術基礎,可以到下方給出的鏈接進行深入學習。項目實戰(zhàn)用到的主要框架和插件有:

webpack:預編譯模塊打包工具。 官方文檔 - 中文翻譯

React:構建用戶界面的JavaScript庫。 官方文檔 - 中文翻譯

Redux:管理整個應用的數據流。 官方文檔 - 中文翻譯

react-router:React應用路由庫。 官方文檔

styled-components:React中的CSS最佳實踐。 官方文檔

isomorphic-fetch:fetch兼容庫。 官方文檔

JRoll2:移動前端滑動插件。 官方文檔

ECharts:基于html5 Canvas圖表庫。 官方文檔

建議學習時以官方文檔為準,中文翻譯或者第三方作者的教程可以幫助你理清思路;會用到的重要知識點我也會進行簡明的解釋,如遇到錯誤或者不理解的內容,歡迎實時指出。

環(huán)境搭建

環(huán)境搭建是最為枯燥和最容易出錯的地方,不過作為開發(fā)者,我們還是很有必要了解配置的具體步驟,在后面一段時間會發(fā)布一個簡易版環(huán)境搭建教程。

系統(tǒng)環(huán)境:Win10 + 關閉安全管家

Node.js安裝

到官方網站下載安裝包 點擊前往,選擇LTS版本(9.0以后的版本在安裝styled-components時會報錯)。

npm部署

npm更新并部署至全局

npm install npm  -g

#【可選】設置淘寶鏡像
npm config set registry https://registry.npm.taobao.org

npm常用命令:

npm init    #引導創(chuàng)建package.json文件
npm install ***    #本地安裝;會在當前目錄生成node_modules文件夾,并在此安裝node模塊
npm install *** -g    #全局安裝;會在C:Users***AppDataRoaming
pm
ode_modules安裝
npm install *** --save    #運行時依賴的模塊;自動把模塊和版本號添加到package.json文件dependencies部分
npm install *** --save-dev    #開發(fā)時依賴的模塊;自動把模塊和版本號添加到package.json文件devdependencies部分
npm update ***    #更新node模塊
npm uninstall ***    #卸載node模塊
創(chuàng)建package.json文件

項目根目錄:D:web eact-webapp-demo,請根據自己實際情況設置。

cd D:web
eact-webapp-demo    #在PowerSell中打開項目目錄
npm init -y    #跳過提問階段,直接生成一個新的 package.json 文件。
安裝模塊
npm install --save react react-dom redux react-redux redux-logger redux-thunk react-router react-router-redux@next history styled-components isomorphic-fetch jroll jroll-pulldown jroll-infinite echarts babel-polyfill
npm install --save-dev webpack webpack-dev-server webpack-merge clean-webpack-plugin babel-loader babel-core babel-preset-env babel-preset-react css-loader style-loader file-loader url-loader html-webpack-plugin uglifyjs-webpack-plugin

模塊簡要說明:

react react-dom:React依賴
redux react-redux redux-logger redux-thunk:Redux依賴
react-router react-router-redux history:react-router依賴
styled-components:React中的CSS的實現依賴
isomorphic-fetch:fetch兼容庫
jroll jroll-pulldown jroll-infinite:JRoll插件依賴
echarts:基于html5 Canvas圖表庫
babel-polyfill:用于實現瀏覽器不支持原生功能的代碼
webpack:預編譯模塊打包
webpack-dev-server:實時重新加載的Web服務器
webpack-merge:webpack配置分離插件
clean-webpack-plugin:在building之前刪除你以前build過的文件
babel-loader babel-core babel-preset-env babel-preset-react:轉碼器babel依賴
css-loader style-loader file-loader url-loader:各格式文件打包依賴
html-webpack-plugin:生成HTML5文件的插件
uglifyjs-webpack-plugin:代碼壓縮插件

配置模塊

在項目根目錄生成.babelrc文件(Windows系統(tǒng)下文件重命名為.babelrc.),并寫入如下數據

{
    "presets": ["env","react"]
}

配置package.json:運行npm run build啟動編譯模式和npm run start熱更新模式;

"scripts": {
    "start": "webpack-dev-server --config webpack.dev.js",
    "build": "webpack --config webpack.prod.js"
},

根目錄新建webpack配置文件:webpack.common.js、webpack.dev.js、webpack.prod.js;

webpack.common.js(共用配置)

const path = require("path");
const CleanWebpackPlugin = require("clean-webpack-plugin");
const HtmlWebpackPlugin = require("html-webpack-plugin");
const webpack = require("webpack");

module.exports = {
    entry: ["babel-polyfill","./src/index.js"],    //項目的起點入口
    output: {    //項目輸出配置
        path: path.resolve(__dirname, "build"),    //文件的輸出目錄 
        filename: "static/js/[name].[hash:5].js"
    },
    module: {    //模塊加載
        rules: [
            {
                test: /.css$/,    //匹配規(guī)則
                use: [
                    { loader: "style-loader" },
                    { loader: "css-loader" }
                ]
            },{
                test: /.(js|jsx)$/,
                exclude: /node_modules/,
                use: {
                    loader: "babel-loader"
                }
            },{
                test: /.(png|svg|jpg|gif)$/,
                use: {
                    loader: "url-loader",
                    options: {
                        limit: 8192,    //小于8192B的文件轉為base64文件
                        name: "static/images/[name].[hash:5].[ext]"
                    }
                }
            }
        ]
    },
    plugins: [    //插件配置
        new CleanWebpackPlugin(["build"]),    //清空編譯輸出文件夾
        new HtmlWebpackPlugin({
            title: "Cinglong"s Demo",
            filename: "index.html",
            template: path.resolve(__dirname, "templates", "index.html")
        }),    //生成Html5文件
        new webpack.optimize.CommonsChunkPlugin({
            name: "commons"
        }),    //共用代碼打包
    ]
};

webpack.dev.js(開發(fā)配置)

const merge = require("webpack-merge");
const common = require("./webpack.common.js");
const webpack = require("webpack");

module.exports = merge(common, {
    devtool: "inline-source-map",    //代碼關聯顯示方式
    devServer: {
        historyApiFallback:true,    //文件重定向,和react-router相關
        hot: true,    //開啟模塊熱替換
        port: 80,    //服務器端口
        host: "192.168.23.101",    //服務器域名
        open: true    //自動打開瀏覽器標簽
    },
    plugins: [
        new webpack.NamedModulesPlugin(),    //顯示模塊的相對路徑
        new webpack.HotModuleReplacementPlugin()    //加載熱替換插件
    ]
});

webpack.prod.js(預編譯配置)

const merge = require("webpack-merge");
const UglifyJSPlugin = require("uglifyjs-webpack-plugin");
const common = require("./webpack.common.js");

module.exports = merge(common, {
    plugins: [
        new UglifyJSPlugin()    //代碼壓縮
    ]
});
項目目錄
 react-webapp-demo
  |- /node_modules    //模塊安裝目錄
  |- /src    //代碼目錄
    |- /container    //容器組件
    |- /presentational    //展示組件
      |- /images    //圖片目錄
    |- /reducers    //reducers操作
    |- /utils    //其他
    |- index.js    //項目入口
  |- /templates    //模板目錄
  |- .babelrc    //babel編譯配置
  |- package.json    //項目目錄配置
  |- package-lock.json    //模塊信息(自動生成)
  |- webpack.common.js    //webpack共用配置
  |- webpack.dev.js    //webpack開發(fā)配置
  |- webpack.prod.js    //webpack編譯配置
系列目錄

前端大統(tǒng)一時代即將來臨?

React項目實戰(zhàn):環(huán)境搭建

React項目實戰(zhàn):react-redux-router基本原理

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規(guī)行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://systransis.cn/yun/90008.html

相關文章

  • React項目實戰(zhàn)環(huán)境搭建

    摘要:官方文檔中文翻譯構建用戶界面的庫。官方文檔建議學習時以官方文檔為準,中文翻譯或者第三方作者的教程可以幫助你理清思路會用到的重要知識點我也會進行簡明的解釋,如遇到錯誤或者不理解的內容,歡迎實時指出。 前言 前面提到前端大統(tǒng)一的概念,如果感興趣,歡迎說說自己的看法,點擊前往。Web前端框架層出不窮,不可能面面俱到,這里給個小建議: 如果對Weex App感興趣,應該選擇vue框架; 如果...

    GHOST_349178 評論0 收藏0
  • DevOps 基于Walle的小型持續(xù)集成實戰(zhàn)(二)設計

    摘要:以便對整個持續(xù)集成印象加深。配置完各環(huán)境發(fā)布腳本后,則可以使用構建發(fā)起進行觸發(fā)環(huán)境準備。并會在遠程環(huán)境上存放多次發(fā)布的版本,用于回退和切換服務停用。進行等操作,停止原本運行的服務切換啟用。 該文章用于建立一個小型的基于Walle的持續(xù)集成工具。解決java,react,angular項目的編譯發(fā)布。以便對整個持續(xù)集成印象加深。官方網站:https://walle-web.io/ 適用...

    zr_hebo 評論0 收藏0
  • React+dva+webpack+antd-mobile 實戰(zhàn)分享(一)

    摘要:再看本篇文章之前,本人還是建議想入坑的童鞋可以選有來創(chuàng)建的項目,因為現在和還不成熟,坑相對要多一些,當然如果你已經做好跳坑的準備,那么請繼續(xù)往下走本文適合對有一定了解的人。 再看本篇文章之前,本人還是建議想入坑react的童鞋可以選有create-react-app來創(chuàng)建react的項目,因為現在dva和roadhog還不成熟,坑相對要多一些,當然如果你已經做好跳坑的準備,那么請繼續(xù)往...

    ziwenxie 評論0 收藏0
  • 在Windows下搭建React Native Android開發(fā)環(huán)境,android開發(fā)mvp模式

    摘要:在這個過程中可能會出現一些問題,導致失敗你沒有配置需要再系統(tǒng)變量中加入這個,指到目錄。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。本文已被開源項目學習筆記總結移動架構視頻大廠面試真題項目實戰(zhàn)源碼收錄 在這個過程中可能會出現一些問題,導致build失?。? 1. 你沒有配置ANDROID_HOME,...

    番茄西紅柿 評論0 收藏2637

發(fā)表評論

0條評論

cnio

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<