摘要:一初始化項(xiàng)目新建文件夾,文件名文件夾名稱不要用,這類關(guān)鍵字,后面使用插件時(shí)會發(fā)生錯(cuò)誤。未設(shè)置會報(bào)一個(gè)警告。四在項(xiàng)目中使用安裝。
一、初始化項(xiàng)目
新建文件夾,文件名firstreact 文件夾名稱不要用react,node這類關(guān)鍵字,后面使用插件時(shí)會發(fā)生錯(cuò)誤。
init項(xiàng)目環(huán)境,項(xiàng)目信息可默認(rèn)或自行修改
mkdir firstreact cd firstreact npm init二、安裝webpack
新建gitignore文件,用于忽略安裝的包文件,文件內(nèi)容: node_modules
安裝webpack, 注意:我此處安裝的webpack版本是4.28.4,webpack4和webpack2, webpack3的一些配置不同,具體參考webpack文檔webpack中文文檔
npm i --save-dev webpack三、配置webpack環(huán)境
新建文件夾,文件名:src
src目錄下新建文件hello.js,文件內(nèi)容:
module.exports = function () { var element = document.createElement("h1"); element.innerHTML = "Hello React"; return element; };
src目錄下新建文件index.js,文件內(nèi)容:
var hello = require("./hello.js"); document.body.appendChild(hello());
新建文件webpack.config.js,一個(gè)最基礎(chǔ)的webpack配置如下:
const webpack = require("webpack"); const path = require("path"); var config = {? entry: [ "./src/index.js" ], // 打包入口文件 output: { path: path.resolve(__dirname, "dist"),? filename: "bundle.js"? } // 打包輸出文件 }; module.exports = config;
執(zhí)行webpack。執(zhí)行完成后,根目錄下會新增一個(gè)dist文件夾,文件夾下是打包出來的js文件bundle.js
webpack
安裝html-webpack-plugin,該插件將為你生成一個(gè) HTML5 文件, 其中包括使用?script?標(biāo)簽的 body 中的所有 webpack 包。
npm i --save-dev html-webpack-plugin
html-webpack-plugin配置,webpack.config.js內(nèi)容如下
const webpack = require("webpack"); const path = require("path"); const HtmlwebpackPlugin = require("html-webpack-plugin"); var config = {? entry: [ "./src/index.js" ], // 打包入口文件 output: { path: path.resolve(__dirname, "dist"),? filename: "bundle.js"? },// 打包輸出文件 plugins: [ new HtmlwebpackPlugin({? title: "Hello React",? }) ] }; module.exports = config;
再次執(zhí)行webpack,此時(shí)dist目錄下生成了一個(gè)新文件index.html
webpack
安裝webpack-dev-server和webpack-cli,提供一個(gè)簡單的 web 服務(wù)器,并且能夠?qū)崟r(shí)重新加載。
npm install --save-dev webpack-dev-server webpack-cli
修改webpack.config
const webpack = require("webpack"); const path = require("path"); const HtmlwebpackPlugin = require("html-webpack-plugin"); var config = { entry: [ "webpack/hot/dev-server", "webpack-dev-server/client?http://localhost:3000", "./src/index.js" ], // 入口文件 output: { path: path.resolve(__dirname, "dist"), filename: "bundle.js" }, // 打包輸出文件 plugins: [ new HtmlwebpackPlugin({ title: "Hello React" }), ] }; module.exports = config;
配置webpack啟動的快方式,此處webpack4在啟動服務(wù)是要求設(shè)置mode,告知 webpack 使用相應(yīng)模式的內(nèi)置優(yōu)化。未設(shè)置會報(bào)一個(gè)警告。mode選項(xiàng)支持“development”“production”“none”,具體信息請閱文檔 修改package.json文件:
············ "scripts": { "start": "webpack-dev-server --mode=development --port 3000 --hot", "build": "webpack --mode=production" } ···········
啟動服務(wù),服務(wù)啟動后打開瀏覽器訪問http://localhost:3000/
npm run dev
css編譯和js編譯。現(xiàn)在開發(fā)時(shí)一般css都會使用擴(kuò)展css語法,如less或sass,這時(shí)就需要在項(xiàng)目中安裝css編譯插件。此處以less為例。es6和es7語法也需要babel編譯。
const webpack = require("webpack"); const path = require("path"); const HtmlwebpackPlugin = require("html-webpack-plugin"); var config = { entry: [ "webpack/hot/dev-server", "webpack-dev-server/client?http://localhost:3000", "./src/index.js" ], // 入口文件 output: { path: path.resolve(__dirname, "dist"), filename: "bundle.js" }, // 打包輸出文件 module: { rules: [ { test: /.less$/, use: [ { loader: "style-loader" }, { loader: "css-loader" }, { loader: "less-loader" } ] }, { test: /.js$/, exclude: /node_modules/, use: [ { loader: "babel-loader" } ] } ] }, plugins: [ new HtmlwebpackPlugin({ title: "Hello React" }), ]
安裝:
npm i --save-dev less css-loader style-loader less-loader npm i --save-dev babel-loader ?@babel/core @babel/preset-env @babel/preset-react
修改webpack.config.js
const webpack = require("webpack"); const path = require("path"); const HtmlwebpackPlugin = require("html-webpack-plugin"); var config = { entry: [ "webpack/hot/dev-server", "webpack-dev-server/client?http://localhost:3000", "./src/index.js" ], // 入口文件 output: { path: path.resolve(__dirname, "dist"), filename: "bundle.js" }, // 打包輸出文件 module: { rules: [ { test: /.less$/, use: [ { loader: "style-loader" }, { loader: "css-loader" }, { loader: "less-loader" } ] }, { test: /.js$/, exclude: /node_modules/, use: [ { loader: "babel-loader" } ] } ] }, plugins: [ new HtmlwebpackPlugin({ title: "Hello React" }), ] }; module.exports = config;
根目錄下新建.babelrc文件,配置文件內(nèi)容如下
{ "presets": [ "@babel/preset-env", "@babel/preset-react" ] }
在src目錄下新建文件index.less,文件內(nèi)容如下
body{ h1{ color: green; } }
修改src目錄下的index.js文件:
import hello from "./hello.js"; import "./index.less"; document.body.appendChild(hello());
再次啟動服務(wù)
npm run start
目前為止完成了一個(gè)最基礎(chǔ)的項(xiàng)目結(jié)構(gòu),后面需要使用其他框架的話再此基礎(chǔ)上修改。在這過程中因各個(gè)插件工具的版本不同可能會發(fā)生不同錯(cuò)誤,遇到錯(cuò)誤時(shí),請查詢相關(guān)文檔。
四、在項(xiàng)目中使用React
安裝react。
npm i --save-dev react react-dom
修改src目錄下index.js,文件內(nèi)容如下:
import React from "react"; import ReactDOM from "react-dom"; import "./index.less"; class APP extends React.Component { render() { return (Hello React
) } } ReactDOM.render(, document.getElementById("content"));
在src目錄下新建index.html,在html增加掛載節(jié)點(diǎn)content。 文件內(nèi)容如下:
<%= htmlWebpackPlugin.options.title %>
對應(yīng)修改webpack.config.js文件,為htmlWebpackPlugin修改template
············ plugins: [ new HtmlwebpackPlugin({ title: "Hello React", template: "./src/index.html" }), ] ············
目錄結(jié)構(gòu)為:
│ .babelrc │ .gitignore │ package.json │ webpack.config.js │ └─src hello.js index.html index.js index.less
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/101886.html
摘要:從零開始的新項(xiàng)目高級篇掘金承接上篇,本篇繼續(xù)講解一些更加進(jìn)階的內(nèi)容,包括列表綁定自定義屬性雙向綁定表達(dá)式鏈表達(dá)式動畫注入測試等。 從零開始的 Android 新項(xiàng)目 8 - Data Binding 高級篇 - 掘金 承接上篇,本篇繼續(xù)講解一些更加進(jìn)階的內(nèi)容,包括:列表綁定、自定義屬性、雙向綁定、表達(dá)式鏈、Lambda表達(dá)式、動畫、Component注入(測試)等。 Demo源碼庫:D...
摘要:有沒有辦法實(shí)現(xiàn)就局部刷新呢當(dāng)然是有第十步執(zhí)行為了實(shí)現(xiàn)局部熱加載,我們需要添加插件。 前言 用了3個(gè)多月的vue自認(rèn)為已經(jīng)是一名合格的vue框架api搬運(yùn)工,對于vue的api使用到達(dá)了一定瓶頸,無奈水平有限,每每深入底層觀賞源碼時(shí)候都迷失了自己。 遂決定再找個(gè)框架學(xué)習(xí)學(xué)習(xí)看看能否突破思維局限,加上本人早已對React、RN技術(shù)垂涎已久,于是決定找找教程來學(xué)習(xí)。無奈第一步就卡在了環(huán)境搭...
摘要:面試造航母,工作擰螺絲,新公司面試技術(shù)官要求會技術(shù)棧。然而公司項(xiàng)目暫時(shí)并沒有用到,不過為了提升實(shí)戰(zhàn)經(jīng)驗(yàn),還是在業(yè)余時(shí)間搗騰出一個(gè),以下是項(xiàng)目介紹。前段為了學(xué)習(xí)小程序的開發(fā),做了個(gè)小程序名叫口袋吉他,這也是個(gè)人興趣驅(qū)使的開發(fā)想法。 面試造航母,工作擰螺絲,新公司面試技術(shù)官要求會react技術(shù)棧。 問:有使用過React么?答:沒,只使用過Vue。又問:給你一星期能上手開發(fā)么?答:可以(一...
摘要:寫在前面準(zhǔn)備學(xué)習(xí)一下和相關(guān)的東西,官方的腳手架看起來太繁瑣,所以打算自己來搭建一個(gè),參考了這個(gè)文檔從零搭建全家桶框架教程步驟上都差不多第一步,依賴總覽完成到我現(xiàn)在半成品的過程中,目前完成開發(fā)模式的相關(guān)操作,添加了按需加載的地步。 寫在前面 準(zhǔn)備學(xué)習(xí)一下react和webpack相關(guān)的東西,官方的腳手架看起來太繁瑣,所以打算自己來搭建一個(gè),參考了這個(gè)文檔從零搭建React全家桶框架教程;...
摘要:從零開始搭建同構(gòu)應(yīng)用二項(xiàng)目工程化瀏覽器端在從零開始同構(gòu)開發(fā)一中我們已經(jīng)能實(shí)現(xiàn)基本的配置和編譯了。接下來我們需要將編譯工作工程化。配置作用自動生成自動在引入,。文件內(nèi)容如下同構(gòu)開發(fā)配置自動刷新這里我們用到的修飾器特性。 從零開始搭建React同構(gòu)應(yīng)用(二) 項(xiàng)目工程化(瀏覽器端) 在從零開始React同構(gòu)開發(fā)(一)中我們已經(jīng)能實(shí)現(xiàn)基本的React配置和編譯了。接下來我們需要將編譯工作工程...
閱讀 854·2021-11-24 10:44
閱讀 2790·2021-11-11 16:54
閱讀 3192·2021-10-08 10:21
閱讀 2096·2021-08-25 09:39
閱讀 2914·2019-08-30 15:56
閱讀 3466·2019-08-30 13:46
閱讀 3502·2019-08-23 18:09
閱讀 2089·2019-08-23 17:05