亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

利用yarn實現一個webpack+react種子

2019-11-20 08:40:12
字體:
來源:轉載
供稿:網友

一、初始化項目

首先確保你的node 版本 >=4.0.并且確保yarn可以正常工作,關于安裝yarn,你可以看這里

我們先創建個空文件夾 比如yarn-react-webpack-seed,然后輸入命令:

yarn init

yarn 如果沒有安裝,全程用 npm代替也沒問題。

項目會初始化 package.json ,然后填寫一些基本信息即可。

接下來我們開始安裝依賴項,再 package.json 的添加下面內容

"dependencies": { "react": "^15.4.0-rc.4", "react-dom": "^15.3.2", "react-router": "^2.8.1" }, "devDependencies": { "babel": "^6.5.2", "babel-core": "^6.17.0", "babel-loader": "^6.2.5", "babel-preset-es2015": "^6.16.0", "babel-preset-react": "^6.16.0", "history": "^4.3.0", "react-hot-loader": "^3.0.0-beta.6", "webpack": "^1.13.2", "webpack-dev-server": "^1.16.2" },

運行命令:

yarn install 

你也可以自行添加依賴,輸入yarn add xxx即可。

yarn add react yarn add webpack --dev ...

項目創建好后,我們接下來創建一些必要的文件和目錄;

+ build+ src- webpack.config.js- package.json- index.html- server.js

二、webpack

webpack (更多)是一款模塊處理器,他會將你所有的代碼打包成靜態文件,放到你的開發的App中。

打開webpack.config.js,然后添加下面的代碼:

var webpack = require('webpack');module.exports = {  entry: [  "webpack-dev-server/client?http://localhost:9000",  'webpack/hot/only-dev-server',  "./src/index" ], output: { path: __dirname + '/build', filename: "bundle.js", publicPath: '/build/', }, module: { loaders: [  {  test: //.js?$/,  loaders: ["react-hot-loader/webpack",'babel-loader?presets[]=react,presets[]=es2015'],  exclude: /node_modules/  },  {  test: //.less$/,  loader: "style!css!less"  }  ] }, plugins: [  new webpack.NoErrorsPlugin(),  new webpack.HotModuleReplacementPlugin() ]};

這份文件大概有四個配置項entry, output, module,plugins.

     entry:指定打包的入口文件,每有一個鍵值對,就是一個入口文件。

     output:配置打包結果,path定義了輸出的文件夾,filename則定義了打包結果文件的名稱,filename里面的[name]會由entry中的鍵替換,例子中的/build/bundle.js便是生成的文件。

     module:定義了對模塊的處理邏輯,這里可以用loaders定義了一系列的加載器,以及一些正則。當需要加載的文件匹配test的正則時,就會進行處理。這里我們使用了react-hot 和 babel。babel-loader是我們使用ES-6進行開發時用于生成JS文件。

     loader對文件進行處理,這正是webpack強大的原因。比如這里定義了凡是.js結尾的文件都是用babel-loader做處理,而.jsx結尾的文件會先經過jsx-loader處理,然后經過babel-loader處理。yarn add添加這些插件。babel中的preset配置你也可以.babelr文件中定義:

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

     plugins: 這里定義了需要使用的插件,比如commonsPlugin在打包多個入口文件時會提取出公用的部分,生成common.js。

這個時候我們再package.json中加入script 字段,

"scripts": { "start": "node server.js", "build": "webpack --progress --colors" }

這個時候我們輸入一個yarn start命令時候我們會啟動一個webpack server這個時候你可以訪問 http://localhost:9000/ 看到我們的頁面了; 如果你使用yarn run build時候可以將文件自動生成到bulid/下。

接下來我們新建index.html文件

<!doctype html> <html lang="en" > <head> <meta charset="UTF-8"> <title>React+React-Router+Webpack+Yarn Seed</title> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no"> </head> <body > <div id="app"></div> <script src="./build/bundle.js"></script> </body> </html>

在index.html中最重要的是引入 bundle.js,實際上index.html你可以隨意修改任何代碼,重要是的引入生成后的文件以及含有react渲染的DOM。

三、React-router

完成項目的基本創建,接下來我們創建src/index.js項目的入口文件。代碼如下:

import React from 'react'; import ReactDOM from 'react-dom'; import App from './app';ReactDOM.render(<App />, document.getElementById('app'));

接下來我們再創建一些包含路由組件的文件src/app.js

import React, { Component } from 'react'; import { render } from 'react-dom'; import { Router, Route, hashHistory } from 'react-router'; // componentsimport Links from './components/links.js'; import Start from './components/start.js'; import Guide from './components/guide.js'; import How from './components/how.js';class App extends Component {  render() { return (  <Router history={hashHistory}>  <Route path="/" component={Links}>   <Route path="/start" component={Start}/>   <Route path="/how" component={How}/>   <Route path="/guide" component={Guide}/>  </Route> </Router>  ); }}export default App; 

頭部是我們將要用的reactreact-router的模塊引進來。 同時我們把用到的組件Links,Start,Guide等引進來。然后我們需要配置router

Route中設置具體的path 和組件。

接下來我們看看如何進行路由的切換,這些內容存放到src/components/links.js中。

import React from 'react'; import { Link } from 'react-router' let Links = React.createClass({  render() { return(  <div>  <aside>   <h4>Categories</h4>   <ul role="nav">   <li><Link to="/start" activeStyle={{color:'#3498db'}}>Start</Link></li>   <li><Link to="/how" activeStyle={{color:'#3498db'}}>How</Link></li>   <li><Link to="/guide" activeStyle={{color:'#3498db'}}>Guide</Link></li>   </ul>  </aside>  <div className="page main">   {this.props.children}  </div>  </div> ); }});export default Links; 

在Link 中我們可以指定具體的路由地址。

剩下的就是添加組件了,比如我們添加一個簡單的start.js到components下面。

import React from 'react';let Start = React.createClass({  render() { return(  <div className="c-home">  <img alt="guide" src="http://img1.vued.vanthink.cn/vuedd144134a46129d7068d36025d64ba905.png" />  <h4>React+React-Router+Webpack+Yarn Seed</h4>  </div> ); }});export default Start; 

其他的組件代碼就不詳細展示了。

這個時候我們輸入yarn run build,我們可以看到build下會生成一個bundle.js 文件。 如果輸入 yarn run start就可以看見頁面了

本地輸入 yarn start 然后訪問 http://localhost:9000 就可以看到自己寫的內容了。

關于React-Router的更多配置,可以參考官方文檔的教程。

四、發布

實際上我們有很多方法可以上線你的服務,但是非常好的一件事情是webpack 可以輕松的使用生成的文件。其中你可以快速的將這些資源文件放到cdn上,然后將index.html放到主機上,更新我們的腳本路徑就可以了。

這次改變用yarn的安裝速度確實比原來npm快了很多幾乎都是10s內就完成了。不需要長時間等待或者切換taobao npm 鏡像。

總結

以上就是這篇文章的全部內容了,希望本文的內容對大家的學習或者工作能帶來一定的幫助,如果有疑問大家可以留言交流。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产成人综合精品| 国产精品成人av在线| 国产欧美一区二区三区视频| 成人a在线观看| 亚洲xxxx3d| 亚洲第一av网站| 欧美成人免费va影院高清| 国产欧美精品一区二区| 日本国产欧美一区二区三区| 2024亚洲男人天堂| 日韩中文字幕在线视频| 国产日韩换脸av一区在线观看| 亚洲白拍色综合图区| 亚洲激情视频网站| 欧美视频在线看| 91精品久久久久久综合乱菊| 成人精品一区二区三区电影黑人| 日产精品久久久一区二区福利| 久久久国产精彩视频美女艺术照福利| 日本伊人精品一区二区三区介绍| 国产欧美日韩精品在线观看| 成人网页在线免费观看| 亚洲综合精品一区二区| 久久久久久伊人| 日韩不卡在线观看| 亚洲欧美一区二区三区久久| 欧美老妇交乱视频| 国产成+人+综合+亚洲欧洲| 亚洲精品国产精品国自产在线| 26uuu久久噜噜噜噜| 久久99国产综合精品女同| 久久久久久久久久久亚洲| 日本高清+成人网在线观看| 国产一区二区丝袜高跟鞋图片| 亚洲色图校园春色| 国产精品色午夜在线观看| 欧美日韩一区二区在线播放| 国产精品久久久av久久久| 成人性生交大片免费观看嘿嘿视频| 久久精品欧美视频| 欧美丝袜一区二区三区| 国产视频亚洲视频| 国产一区二区视频在线观看| 国产一区在线播放| 韩国精品美女www爽爽爽视频| 福利微拍一区二区| 国产成人在线亚洲欧美| 欧美成人精品在线播放| 亚洲视频777| 国产成人精品久久二区二区| 欧美亚洲国产日本| 久久99热精品这里久久精品| 国产精品久久久久久超碰| 4k岛国日韩精品**专区| 久久久久久久久久久人体| 97欧美精品一区二区三区| 日韩在线视频免费观看高清中文| 综合国产在线观看| 一区二区亚洲精品国产| 日韩欧美一区二区在线| 久久天堂电影网| 中文字幕亚洲字幕| 亚洲欧美日韩国产精品| 国产精品久久久久久久av电影| 亚洲丝袜av一区| 久久久97精品| xvideos国产精品| 国产精品成人观看视频国产奇米| 欧美成人午夜免费视在线看片| 九九九久久久久久| 午夜精品久久久久久99热| 日韩电视剧在线观看免费网站| 国产精品久久久av| 国产精品第二页| 亚洲曰本av电影| 欧美激情亚洲精品| 国产一区二区三区视频| 91美女福利视频高清| 欧美一级视频在线观看| 91精品国产综合久久香蕉的用户体验| 精品中文字幕在线2019| 久久99久久99精品免观看粉嫩| 欧美又大又硬又粗bbbbb| 日韩精品在线观看网站| 91精品在线观看视频| 久久久久久久一| 亚洲人成免费电影| 国产成人一区二区三区| 欧美大胆a视频| 国产成人亚洲综合青青| 亚洲人成在线观看网站高清| 亚洲欧美日韩图片| 亚洲日本中文字幕免费在线不卡| 久久久久久久一区二区三区| 亚洲精品福利资源站| 久久久久久高潮国产精品视| 欧美成年人视频网站| 亚洲国产99精品国自产| 美日韩在线视频| 亚洲精品国产免费| 亚洲欧美制服中文字幕| 欧美成人午夜影院| 久久久久国色av免费观看性色| 亚洲精品www久久久久久广东| 亚洲最大av网站| 国产精品免费电影| 亚洲第一综合天堂另类专| 国产精品永久免费在线| 欧美性xxxxx极品| 欧美性精品220| 成人自拍性视频| 亚洲国产精品美女| 中文字幕亚洲一区二区三区| 色综合久久天天综线观看| 日韩中文字幕网| 狠狠色噜噜狠狠狠狠97| 欧美午夜视频在线观看| 综合网日日天干夜夜久久| 国产欧美 在线欧美| 久久精品国产欧美激情| 亚洲free嫩bbb| 一区二区三区视频免费| 久久夜色精品亚洲噜噜国产mv| 一区二区三区国产在线观看| y97精品国产97久久久久久| 欧美老女人bb| 亚洲深夜福利网站| 色多多国产成人永久免费网站| 欧美性生活大片免费观看网址| 黄色一区二区三区| 欧美日韩成人免费| www.国产一区| 国产精品久久久久久久久影视| 欧美日本精品在线| 国产精品久久77777| 日韩视频免费在线| 国产精彩精品视频| 91理论片午午论夜理片久久| 92看片淫黄大片欧美看国产片| 亚洲aⅴ日韩av电影在线观看| 亚洲男人天堂手机在线| 国产精品自拍网| 久久午夜a级毛片| www.xxxx精品| 热久久99这里有精品| 成人免费直播live| 日韩亚洲国产中文字幕| 92看片淫黄大片欧美看国产片| 亚洲爱爱爱爱爱| 日韩欧美高清在线视频| 欧美成人手机在线| 亚洲色图偷窥自拍| 色综合视频网站| 国产成人精品一区二区在线| 尤物99国产成人精品视频| 国内成人精品视频| 久久久久久国产精品美女| 亚洲视频视频在线| 国产精品1234| 欧美激情视频网址| 欧美超级免费视 在线| 一区二区成人精品| 成人黄色在线观看| 中文字幕成人在线|