成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

使用React-route和Webpack快速構(gòu)建一個(gè)react程序

ssshooter / 3023人閱讀

摘要:對(duì)文件進(jìn)行處理,這正是強(qiáng)大的原因。接著,我們使用創(chuàng)建一個(gè)類(lèi)。在這個(gè)中,我們定義路由并且指定了相應(yīng)的處理程序組件。我們創(chuàng)建其實(shí)那只是一個(gè)非常簡(jiǎn)單的組件,內(nèi)容為顯示。官方也有一個(gè)使用聊天可供學(xué)習(xí)。

初始化項(xiàng)目

我們先創(chuàng)建個(gè)空文件夾,然后初始化 package.json ,填寫(xiě)一些基本信息。

$ npm init

接下來(lái)我們開(kāi)始安裝依賴(lài)項(xiàng),我的 package.json 的依賴(lài)項(xiàng)如下

 "devDependencies": {
    "babel": "^5.5.6",
    "babel-core": "^5.5.6",
    "babel-loader": "^5.1.4",
    "history": "^1.13.1",
    "react": "^0.13.3",
    "react-hot-loader": "^1.2.7",
    "react-router": "^0.13.3",
    "webpack": "^1.12.6",
    "webpack-dev-server": "^1.12.1"
  } 

運(yùn)行命令:

$ npm install 

項(xiàng)目創(chuàng)建好后,我們接下來(lái)創(chuàng)建一些必要的文件和目錄;

$ mkdir js css && touch index.html webpack.config.js
webpack

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

打開(kāi)webpack.config.js,然后添加下面的代碼:

var webpack = require("webpack");  
module.exports = {  
    entry: [
      "webpack/hot/only-dev-server",
      "./js/app.js"
    ],
    output: {
        path: __dirname + "/build",
        filename: "bundle.js"
    },
    module: {
        loaders: [
            { test: /.js?$/, loaders: ["react-hot", "babel"], exclude: /node_modules/ },
            { test: /.js$/, exclude: /node_modules/, loader: "babel-loader"},
            { test: /.css$/, loader: "style!css" }
        ]
    },
    plugins: [
      new webpack.NoErrorsPlugin()
    ]
};

這份文件大概有四個(gè)配置項(xiàng)entry, output, module, plugins.

entry:指定打包的入口文件,每有一個(gè)鍵值對(duì),就是一個(gè)入口文件。

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

resolve:定義了解析模塊路徑時(shí)的配置,常用的就是extensions,可以用來(lái)指定模塊的后綴,這樣在引入模塊時(shí)就不需要寫(xiě)后綴了,會(huì)自動(dòng)補(bǔ)全.

module:定義了對(duì)模塊的處理邏輯,這里可以用loaders定義了一系列的加載器,以及一些正則。當(dāng)需要加載的文件匹配test的正則時(shí),就會(huì)進(jìn)行處理。這里我們使用了react-hotbabel。babel-loader是我們使用ES-6進(jìn)行開(kāi)發(fā)時(shí)用于生成JS文件。
最后我們生成了一個(gè)style.css僅僅做個(gè)例子,告訴我們?nèi)绾我霕邮轿募?,?shí)際上我們可以加載諸如sass-loader這樣的加載器。

loader對(duì)文件進(jìn)行處理,這正是webpack強(qiáng)大的原因。比如這里定義了凡是.js結(jié)尾的文件都是用babel-loader做處理,而.jsx結(jié)尾的文件會(huì)先經(jīng)過(guò)jsx-loader處理,然后經(jīng)過(guò)babel-loader處理。當(dāng)然這些loader也需要通過(guò)npm install安裝。

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

NoErrorsPlugin: 定義代碼出現(xiàn)錯(cuò)誤時(shí)的時(shí)受否自動(dòng)重新加載。

這個(gè)時(shí)候我們?cè)?b>package.json中加入script 字段,

"scripts": {
    "start": "webpack-dev-server --hot --progress --colors",
    "build": "webpack --progress --colors"
  }

這個(gè)時(shí)候我們輸入一個(gè)npm start命令時(shí)候我們會(huì)啟動(dòng)一個(gè)webpack server這個(gè)時(shí)候你可以訪問(wèn)localhost:8080/webpack-dev-server/#/;如果你使用npm run build時(shí)候可以將文件自動(dòng)生成到bulid/下。

接下來(lái)我們新建index.html文件

  
  
  
    
    New React App
  
  
    

現(xiàn)在我們?cè)L問(wèn)瀏覽器可以便會(huì)引進(jìn)新創(chuàng)建的bundle.js,實(shí)際上你可以引進(jìn)任何你想要的資源。

React-router

完成項(xiàng)目的基本創(chuàng)建,接下來(lái)我們創(chuàng)建app.js項(xiàng)目的入口文件。代碼如下:

import React from "react";  
import Router from "react-router";  
import { DefaultRoute, Link, Route, RouteHandler } from "react-router";

import LoginHandler from "./components/Login.js";

let App = React.createClass({  
  render() {
    return (
      
Home Login {/* this is the importTant part */}
); } }); let routes = ( ); Router.run(routes, function (Handler) { React.render(, document.body); });

文章頭部是我們將要用的reactreact-router的插件包引進(jìn)來(lái)。同事我們還引入login.js作為我們的Login React 組件。接著,我們使用React 創(chuàng)建一個(gè)類(lèi)。這個(gè)例子中,其實(shí)就是一個(gè)簡(jiǎn)單的導(dǎo)航條會(huì)出現(xiàn)所有的子組件中。我們簡(jiǎn)單的Link到我們的路由:AppLogin.然后React route將會(huì)被RouteHandler組件初始化。

在這個(gè)App中,我們定義路由并且指定了相應(yīng)的處理程序(React 組件)。我們定義了我們的根路徑為app,并且其他的地址將會(huì)是App的子組件。這個(gè)例子中,我們添加了一個(gè)登錄頁(yè)面,用于用戶(hù)登錄到App中。

最后,React-router會(huì)將我們定義的一切加載到document.body中來(lái)。這就是index.html轉(zhuǎn)變成我們React App.

Components

弄到這了,我們需要添加組件(Components).在我們的 /js 目錄下,我們需要開(kāi)始創(chuàng)建組件。我們創(chuàng)建Login.js:

import React from "react";

let Login = React.createClass({ 

  render() {
    return(
Welcome to login
); } }); export default Login;

其實(shí)那只是一個(gè)非常簡(jiǎn)單的組件,內(nèi)容為顯示"Welcaome to Login"。這個(gè)時(shí)候我們可以運(yùn)行下我們的app。npm start 然后訪問(wèn)http://localhost:8080/webpack-dev-server/#

這個(gè)時(shí)候,你可以見(jiàn)到一個(gè)導(dǎo)航條上有兩個(gè)鏈接Home 和 Login.如果點(diǎn)擊Login這個(gè)時(shí)候可以顯示我們剛剛創(chuàng)建的內(nèi)容。

如果上面一切順利,那么現(xiàn)在你可以自己創(chuàng)建更多內(nèi)容來(lái)充實(shí)自己App.如果你項(xiàng)目中使用Flux(強(qiáng)烈推薦,地址),你可以在你的js 文件夾下使用任何結(jié)構(gòu)。Facebook 官方也有一個(gè)使用flux聊天Demo可供學(xué)習(xí)。

發(fā)布

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

博客地址:http://www.jackpu.com/shi-yong-react-routehe-webpackkuai-su-gou-jian-ge-reactcheng-xu/

如果有什么問(wèn)題可以發(fā)送郵件給我 [email protected] 以及原作者

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/78811.html

相關(guān)文章

  • React+ Redux + React-route + Axios 實(shí)戰(zhàn),很適合進(jìn)階

    摘要:前言前段時(shí)間學(xué)習(xí)完了的基礎(chǔ)自己網(wǎng)上找了一些實(shí)戰(zhàn)項(xiàng)目做了幾個(gè)感覺(jué)項(xiàng)目不是很全面就想做一個(gè)完整的項(xiàng)目來(lái)提升自己的水平以前學(xué)習(xí)的時(shí)候就看過(guò)大神的項(xiàng)目所以自己打算用重寫(xiě)它后端數(shù)據(jù)還是用實(shí)在沒(méi)有精力擼后端感謝大神該項(xiàng)目是餓了么目前開(kāi)發(fā)了登錄注冊(cè)購(gòu) 前言 前段時(shí)間學(xué)習(xí)完了React的基礎(chǔ),自己網(wǎng)上找了一些實(shí)戰(zhàn)項(xiàng)目,做了幾個(gè)感覺(jué)項(xiàng)目不是很全面,就想做一個(gè)完整的項(xiàng)目來(lái)提升自己的React水平.以前學(xué)習(xí)...

    phpmatt 評(píng)論0 收藏0
  • Router入門(mén)0x203: react、react-route、react-route-dom

    摘要:概述上一章使用的是自己實(shí)現(xiàn)的,當(dāng)然已經(jīng)有現(xiàn)成的庫(kù)給我們用了,那就是??偨Y(jié)看透它,然后掌握它資源源碼 0x000 概述 上一章使用的是自己實(shí)現(xiàn)的route,當(dāng)然已經(jīng)有現(xiàn)成的庫(kù)給我們用了,那就是react-route。 0x001 history Api說(shuō)明 在說(shuō)這個(gè)庫(kù)之前,得先對(duì)history新的api做一個(gè)了解 window.history.pushState(data,title...

    luxixing 評(píng)論0 收藏0
  • react+webpack+webstorm開(kāi)發(fā)環(huán)境搭建

    摘要:先是基礎(chǔ)知識(shí),首先是補(bǔ)了的基礎(chǔ),使用了的入門(mén)教程。另外關(guān)于,慕課的視頻教程講的也比較清晰,適合入門(mén)統(tǒng)統(tǒng)過(guò)了一遍之后,開(kāi)始建立腳手架,正式上馬編寫(xiě)。廢話(huà)不多說(shuō)了,下面一步一步開(kāi)始了。安裝完成之后,記得設(shè)置路徑構(gòu)建項(xiàng)目使用新建一個(gè)空白項(xiàng)目。 前言 春節(jié)期間,更新了一下自己關(guān)于前端的知識(shí)體系,要知道對(duì)于前端技術(shù),我還是停留在JSP,JQUERY的時(shí)代,現(xiàn)在項(xiàng)目里面使用REACT作為前臺(tái),所以...

    Snailclimb 評(píng)論0 收藏0
  • Router入門(mén)0x201: 從 URL 到 SPA

    摘要:的全稱(chēng)是統(tǒng)一資源定位符英文,可以這么說(shuō),是一種標(biāo)準(zhǔn),而網(wǎng)址則是符合標(biāo)準(zhǔn)的一種實(shí)現(xiàn)而已。渲染器,將組件渲染到頁(yè)面上。 0x000 概述 從這一章開(kāi)始就進(jìn)入路由章節(jié)了,并不直接從如何使用react-route來(lái)講,而是從路由的概念和實(shí)現(xiàn)來(lái)講,達(dá)到知道路由的本質(zhì),而不是只知道如何使用react-route庫(kù)的目的,畢竟react-route只是一個(gè)庫(kù),是路由的一個(gè)實(shí)現(xiàn)而已,而不是路由本身。 ...

    honmaple 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

閱讀需要支付1元查看
<