摘要:官方文檔中文翻譯構建用戶界面的庫。官方文檔建議學習時以官方文檔為準,中文翻譯或者第三方作者的教程可以幫助你理清思路會用到的重要知識點我也會進行簡明的解釋,如遇到錯誤或者不理解的內容,歡迎實時指出。
前言
前面提到前端大統一的概念,如果感興趣,歡迎說說自己的看法,點擊前往。Web前端框架層出不窮,不可能面面俱到,這里給個小建議:
如果對Weex App感興趣,應該選擇vue框架;
如果對React Native App感興趣,應該選擇React.js框架;
本系列文章是React技術棧,Vue技術棧將會在本系列文章結束后陸續更新。
技術棧由于本系列的文章是項目實戰,需要有相關的技術基礎,可以到下方給出的鏈接進行深入學習。項目實戰用到的主要框架和插件有:
webpack:預編譯模塊打包工具。 官方文檔 - 中文翻譯
React:構建用戶界面的JavaScript庫。 官方文檔 - 中文翻譯
Redux:管理整個應用的數據流。 官方文檔 - 中文翻譯
react-router:React應用路由庫。 官方文檔
styled-components:React中的CSS最佳實踐。 官方文檔
isomorphic-fetch:fetch兼容庫。 官方文檔
JRoll2:移動前端滑動插件。 官方文檔
ECharts:基于html5 Canvas圖表庫。 官方文檔
建議學習時以官方文檔為準,中文翻譯或者第三方作者的教程可以幫助你理清思路;會用到的重要知識點我也會進行簡明的解釋,如遇到錯誤或者不理解的內容,歡迎實時指出。
環境搭建環境搭建是最為枯燥和最容易出錯的地方,不過作為開發者,我們還是很有必要了解配置的具體步驟,在后面一段時間會發布一個簡易版環境搭建教程。
Node.js安裝系統環境:Win10 + 關閉安全管家
到官方網站下載安裝包 點擊前往,選擇LTS版本(9.0以后的版本在安裝styled-components時會報錯)。
npm部署npm更新并部署至全局
npm install npm -g #【可選】設置淘寶鏡像 npm config set registry https://registry.npm.taobao.org
npm常用命令:
npm init #引導創建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 #開發時依賴的模塊;自動把模塊和版本號添加到package.json文件devdependencies部分 npm update *** #更新node模塊 npm uninstall *** #卸載node模塊創建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系統下文件重命名為.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$/, //匹配規則 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(開發配置)
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開發配置 |- webpack.prod.js //webpack編譯配置系列目錄
前端大統一時代即將來臨?
React項目實戰:環境搭建
React項目實戰:react-redux-router基本原理
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/90008.html
摘要:官方文檔中文翻譯構建用戶界面的庫。官方文檔建議學習時以官方文檔為準,中文翻譯或者第三方作者的教程可以幫助你理清思路會用到的重要知識點我也會進行簡明的解釋,如遇到錯誤或者不理解的內容,歡迎實時指出。 前言 前面提到前端大統一的概念,如果感興趣,歡迎說說自己的看法,點擊前往。Web前端框架層出不窮,不可能面面俱到,這里給個小建議: 如果對Weex App感興趣,應該選擇vue框架; 如果...
摘要:以便對整個持續集成印象加深。配置完各環境發布腳本后,則可以使用構建發起進行觸發環境準備。并會在遠程環境上存放多次發布的版本,用于回退和切換服務停用。進行等操作,停止原本運行的服務切換啟用。 該文章用于建立一個小型的基于Walle的持續集成工具。解決java,react,angular項目的編譯發布。以便對整個持續集成印象加深。官方網站:https://walle-web.io/ 適用...
摘要:再看本篇文章之前,本人還是建議想入坑的童鞋可以選有來創建的項目,因為現在和還不成熟,坑相對要多一些,當然如果你已經做好跳坑的準備,那么請繼續往下走本文適合對有一定了解的人。 再看本篇文章之前,本人還是建議想入坑react的童鞋可以選有create-react-app來創建react的項目,因為現在dva和roadhog還不成熟,坑相對要多一些,當然如果你已經做好跳坑的準備,那么請繼續往...
摘要:在這個過程中可能會出現一些問題,導致失敗你沒有配置需要再系統變量中加入這個,指到目錄。所以面試沒有其他的訣竅,只看你對這些知識點準備的充分程度。本文已被開源項目學習筆記總結移動架構視頻大廠面試真題項目實戰源碼收錄 在這個過程中可能會出現一些問題,導致build失敗: 1. 你沒有配置ANDROID_HOME,...
閱讀 1881·2021-11-11 16:55
閱讀 2063·2021-10-08 10:13
閱讀 738·2019-08-30 11:01
閱讀 2155·2019-08-29 13:19
閱讀 3277·2019-08-28 18:18
閱讀 2620·2019-08-26 13:26
閱讀 578·2019-08-26 11:40
閱讀 1864·2019-08-23 17:17