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