摘要:使用包管理工具,基于構(gòu)建工具,搭建開(kāi)發(fā)環(huán)境由于一些軟件安裝跟系統(tǒng)環(huán)境相關(guān),故這里查看本文檔,需要根據(jù)自己的系統(tǒng)環(huán)境,選擇相對(duì)應(yīng)的系統(tǒng)版本。
使用Yarn包管理工具,基于Webpack構(gòu)建工具,搭建React開(kāi)發(fā)環(huán)境
由于一些軟件安裝跟系統(tǒng)環(huán)境相關(guān),故這里查看本文檔,需要根據(jù)自己的系統(tǒng)環(huán)境,選擇相對(duì)應(yīng)的系統(tǒng)版本。
本文運(yùn)行環(huán)境
system:macos
react:16.8.6
react-dom:16.8.6
webpack:4.36.1
Yarn
Yarn 是一個(gè)快速、可靠、安全的依賴(lài)管理工具,又 faceback開(kāi)源
Yarn 通過(guò)一組豐富的命令執(zhí)行包的安裝、管理、發(fā)布等操作。
Yarn 與 Npm的許多功能是相同的,包的元數(shù)據(jù)格式也是一樣的,因此可以無(wú)痛遷移到 Yarn。
中文文檔:https://yarn.bootcss.com/docs...
MacOS系統(tǒng)安裝Yarn
brew install yarn
在一個(gè)空目錄下,用 Yarn初始化一個(gè)新項(xiàng)目
yarn init
React
react用于構(gòu)建用戶(hù)界面的 JavaScript 庫(kù)
官方文檔:https://zh-hans.reactjs.org/
安裝項(xiàng)目運(yùn)行依賴(lài) react包 和 react-dom包
yarn add react react-dom
安裝項(xiàng)目開(kāi)發(fā)依賴(lài) webpack 和 webpack-cli 包
yarn add -D webpack webpack-cli html-webpack-plugin
配置webpack編譯項(xiàng)目
創(chuàng)建項(xiàng)目目錄
mkdir -p src/js src/pages
編寫(xiě)項(xiàng)目初始文件
// html vi src/pages/index.htmlTitle // javascript vi src/js/index.js alert("hello")
編寫(xiě)webpack配置文件
vi webpack.config.js const path = require("path"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const config = { mode: "development", // 入口 entry: { app: "./src/js/index" }, // 輸出 output: { filename: "[name].js", path: path.join(__dirname, "build") }, // 插件,這里使用一個(gè) html-webpack-plugin插件,編譯的時(shí)候會(huì)將編譯的js文件自動(dòng)引入html文件中 plugins: [ new HtmlWebpackPlugin({ filename: "index.html", template: "./src/pages/index.html" }) ], } module.exports = config;
編輯package.json文件,添加一個(gè)scripts命令build
"scripts": { "build": "webpack" },
使用webpack打包,在命令行運(yùn)行
yarn run build
如果沒(méi)有出錯(cuò)的話,在項(xiàng)目目錄下的build目錄中會(huì)出現(xiàn)兩個(gè)文件app.js和index.html
可以啟動(dòng)一個(gè)webserver來(lái)運(yùn)行build目錄中的文件
上面如果不出錯(cuò)的情況下,我們開(kāi)發(fā)配置webpack編譯React項(xiàng)目
編寫(xiě)文件
vi /src/js/index.js "use strict"; import React from "react"; import ReactDOM from "react-dom"; ReactDOM.render(Hello, World!
, document.getElementById("root") );
react使用一種jsx語(yǔ)法,需要使用babel編譯
babel文檔:https://www.babeljs.cn/setup#...
安裝babel
yarn add -D babel-loader @babel/core
編寫(xiě)webpack配置文件
vi webpack.config.js vi webpack.config.js const path = require("path"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const config = { mode: "development", // 入口 entry: { app: "./src/js/index" }, // 輸出 output: { filename: "[name].js", path: path.join(__dirname, "build") }, // 插件,這里使用一個(gè) html-webpack-plugin插件,編譯的時(shí)候會(huì)將編譯的js文件自動(dòng)引入html文件中 plugins: [ new HtmlWebpackPlugin({ filename: "index.html", template: "./src/pages/index.html" }) ], module: { rules: [ { test: /.js$/, exclude: /node_modules/, loader: "babel-loader"} ] }, } module.exports = config;
安裝babel對(duì)react的 preset
文檔:https://www.babeljs.cn/docs/b...
yarn add -D @babel/preset-react
添加 .babelrc配置文件,并寫(xiě)入
{ "presets": ["@babel/preset-react"] }
一切就緒,再次運(yùn)行webpack打包
yarn run build
再次使用webserver運(yùn)行build目錄下的文件,進(jìn)行測(cè)試
ok,在這里基本就已經(jīng)完成開(kāi)發(fā)環(huán)境的搭建
優(yōu)化
我們發(fā)現(xiàn)打包后的app.js文件太大,app.js將react和react-dom源碼也打包進(jìn)了app.js文件,我們需要將其摘出來(lái),react和react-dom可以使用官網(wǎng)上給出的CDN地址,在index.html文件用手動(dòng)引入。
再次配置webpack
vi webpack.config.js vi webpack.config.js const path = require("path"); const HtmlWebpackPlugin = require("html-webpack-plugin"); const config = { mode: "development", // 入口 entry: { app: "./src/js/index" }, // 輸出 output: { filename: "[name].js", path: path.join(__dirname, "build") }, // 插件,這里使用一個(gè) html-webpack-plugin插件,編譯的時(shí)候會(huì)將編譯的js文件自動(dòng)引入html文件中 plugins: [ new HtmlWebpackPlugin({ filename: "index.html", template: "./src/pages/index.html" }) ], module: { rules: [ { test: /.js$/, exclude: /node_modules/, loader: "babel-loader"} ] }, // 過(guò)濾 externals: { "react": "React", "react-dom": "ReactDOM" } } module.exports = config;
在index.html文件中引入react的cdn
Title
再次運(yùn)行webpack打包
yarn run build
檢查打包后app.js文件是否小了?
再次啟動(dòng)一個(gè)webserver運(yùn)行測(cè)試
總結(jié)
前端工具繁多,千變?nèi)f化,不同的版本,可能相關(guān)配置都不一樣,所以我們要學(xué)會(huì)看相關(guān)官方文檔,一切以官方文檔為準(zhǔn)則,適當(dāng)?shù)泥駠魍虠棧挥弥湟猓苯觕opy文檔上的相關(guān)配置,而將有限的精力放入項(xiàng)目業(yè)務(wù)本身。
原文鏈接:https://www.mi360.cn/articles...
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://specialneedsforspecialkids.com/yun/105862.html
項(xiàng)目開(kāi)始前,我們先聊一聊關(guān)于項(xiàng)目的一些說(shuō)明。該項(xiàng)目起始于2017年初,當(dāng)時(shí)公司主要技術(shù)棧為gulp+angular,鑒于react的火熱的生態(tài),在公司決定研發(fā)bss管理系統(tǒng)時(shí)選用react開(kāi)發(fā),目的也是為react native打下基礎(chǔ),以解決后期公司大前端技術(shù)棧的逐步成熟。(當(dāng)時(shí)沒(méi)有選擇vue開(kāi)發(fā)的主要原因是weex生態(tài)還不夠特別成熟),既然決定換新,項(xiàng)目的構(gòu)建也跟著一起換,從gulp轉(zhuǎn)向火熱的...
摘要:文檔翻譯系列一安裝原文地址原文本系列是針對(duì)文檔進(jìn)行的翻譯,因?yàn)樽约涸趯W(xué)習(xí)的時(shí)候,最開(kāi)始通過(guò)看博客或者論壇等中文資料,有些內(nèi)容是零零散散的接收,并沒(méi)有給自己帶來(lái)很好的效果,所以后來(lái)決定把文檔的原文從頭到尾看一遍。 React文檔翻譯系列(一)安裝 原文地址:原文 本系列是針對(duì)React文檔進(jìn)行的翻譯,因?yàn)樽约涸趯W(xué)習(xí)react的時(shí)候,最開(kāi)始通過(guò)看博客或者論壇等中文資料,有些內(nèi)容是零零散散的...
摘要:隔壁老王今日行程不同的內(nèi)容使用這種方法就可以將我們得所有路由寫(xiě)在一起了,可能有人覺(jué)得每次都要寫(xiě)引入很麻煩,有沒(méi)有其他更好用的辦法,在講的時(shí)候會(huì)說(shuō)到這里就先跳過(guò)。 前言 距離上篇文章已經(jīng)好長(zhǎng)一段時(shí)間了,這兩個(gè)星期公司派駐到京東方這邊出差負(fù)責(zé)入駐項(xiàng)目團(tuán)隊(duì)的前端工作。這段時(shí)間從零搭建一下前端項(xiàng)目,這次給的時(shí)間比較充裕,思考的也比較多。以前也常有搭過(guò)前端項(xiàng)目,但是給的時(shí)間都比較緊,因此很多問(wèn)題...
摘要:解決思路服務(wù)器端渲染服務(wù)器端和前端公用同一個(gè)應(yīng)用,然后通過(guò)構(gòu)建工具及配置,確定哪些組件需要再服務(wù)器端渲染,那些組件需要再客戶(hù)端渲染。服務(wù)器端渲染,由框架與構(gòu)建工具配合,并依據(jù)一定的項(xiàng)目結(jié)構(gòu)和編碼方式,共同運(yùn)行。 分離 為什么需要 前后端分離、web服務(wù)器與static服務(wù)器分離: 前端與后端耦合 (需求) 自動(dòng)化、工程化的構(gòu)建前端的代碼 (基礎(chǔ)條件) 模塊化、組件化,項(xiàng)目共享代碼 (...
摘要:使用要給項(xiàng)目構(gòu)建接入動(dòng)態(tài)鏈接庫(kù)的思想,需要完成以下事情把網(wǎng)頁(yè)依賴(lài)的基礎(chǔ)模塊抽離出來(lái),打包到一個(gè)個(gè)單獨(dú)的動(dòng)態(tài)鏈接庫(kù)中去。接入已經(jīng)內(nèi)置了對(duì)動(dòng)態(tài)鏈接庫(kù)的支持,需要通過(guò)個(gè)內(nèi)置的插件接入,它們分別是插件用于打包出一個(gè)個(gè)單獨(dú)的動(dòng)態(tài)鏈接庫(kù)文件。 webpack優(yōu)化 查看所有文檔頁(yè)面:全棧開(kāi)發(fā),獲取更多信息。原文鏈接:webpack優(yōu)化,原文廣告模態(tài)框遮擋,閱讀體驗(yàn)不好,所以整理成本文,方便查找。 ...
閱讀 2241·2021-11-23 09:51
閱讀 1073·2021-11-22 15:35
閱讀 4831·2021-11-22 09:34
閱讀 1597·2021-10-08 10:13
閱讀 3018·2021-07-22 17:35
閱讀 2519·2019-08-30 15:56
閱讀 3079·2019-08-29 18:44
閱讀 3089·2019-08-29 15:32