webpack + node.js + react 项目实例

一、创建基本目录结构

1.新建项目工程:PockerUI

     
     
     
     

这里写图片描述

2.配置jsx

     
     
     
     

这里写图片描述


     
     
     
     
  1. 3.安装 webpack
  2. 在此之前你应该已经安装了 node .js.
npm install webpack -g
     
     
     
     
  • 1
参数-g表示我们将全局(global)安装 webpack, 这样你就能使用 webpack 命令了.

     
     
     
     

webpack 也有一个 web 服务器 webpack-dev-server, 我们也安装上

npm install webpack-dev-server -g

     
     
     
     

webpack 配置文件

新建文件:webpack.config.js (webpack 使用一个名为 webpack.config.js 的配置文件【必须】 )


     
     
     
     
  1. //process.noDeprecation = true;
  2. var path = require( 'path');
  3. var BrowserSyncPlugin = require( 'browser-sync-webpack-plugin');
  4. var HtmlWebpackPlugin= require( 'html-webpack-plugin');
  5. module.exports = {
  6. entry: { //输入文件
  7. 'index': './src/js/index.js' //‘index’是生成文件的名称,,多个生成文件名将匹配output里的[name],'index'后面的需要被加载到index的文件的路径,可用数组方式加载多个文件,如['./src/js/index.js','./src/js/base.js']
  8. },
  9. output: { //输出文件
  10. path: 'build/js', // 输出js和图片的目录
  11. filename: '[name].bundle.js'
  12. },
  13. module: { //模块加载器配置
  14. loaders: [{
  15. test: /\.less$/,//正则匹配拓展名为···的文件
  16. include: path.join(__dirname, './src/less'),//需要被加载文件的路径
  17. loader: 'style-loader!css-loader!less-loader'
  18. }, {
  19. test: /\.html$/,
  20. exclude: /node_modules/,//这个文件除外
  21. loader: 'html-loader'
  22. },{
  23. test: /\.js?$/,
  24. include: path.join(__dirname, './src/js'),
  25. loader: 'babel-loader'
  26. }, {
  27. test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  28. loader: 'url-loader?limit=10000&minetype=srclication/font-woff'
  29. }, {
  30. test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/,
  31. loader: 'file-loader'
  32. },{
  33. test: /\.(png|jpg)$/,
  34. loader: 'url-loader?limit=8192' // 内联的base64的图片地址,图片要小于8k,直接的url的地址则不解析
  35. }]
  36. },
  37. plugins: [
  38. //单独生成html文件
  39. new HtmlWebpackPlugin({
  40. filename: '../index.html', //生成的html及存放路径,相对于path
  41. template: './src/index.html', //载入文件及路径
  42. publicPath: "js/", //这是build文件下html文件引用js文件的路径
  43. chunks: [ 'index'], //需要引入的chunk,不配置就会引入所有页面的资源
  44. }),
  45. // 使用browser-sync实时刷新页面
  46. new BrowserSyncPlugin({
  47. host: 'localhost',
  48. port: 3000,
  49. server: { baseDir: [ './build/'] } //会默认访问./build/index.html
  50. })
  51. ]
};
     
     
     
     

新建文件:package.json (需要引入的相关依赖【必须】)


     
     
     
     
  1. {
  2. " name ": "react-es6-less-bootstrap-webpack-template",
  3. " version ": "1.0.0",
  4. " description ": "A simple webpack template.",
  5. " repository ": {},
  6. " scripts ": {
  7. " start ": "webpack -d --progress --colors --watch",
  8. " build/ ": "webpack -p"
  9. },
  10. " dependencies ": {
  11. " bootstrap ": "^3.3.5",
  12. " react ": "^0.14.0",
  13. " react-dom ": "^0.14.1",
  14. " jade ": "1.11.0",
  15. " jquery ": "^3.2.1"
  16. },
  17. " devDependencies ": {
  18. " babel-core ": "^5.8.30",
  19. " babel-loader ": "^5.3.2",
  20. " browser-sync ": "^2.11.2",
  21. " browser-sync-webpack-plugin ": "^1.0.1",
  22. " css-loader ": "^0.21.0",
  23. " file-loader ": "^0.8.4",
  24. " html-loader ": "^0.4.3",
  25. " html-webpack-plugin ": "^2.7.2",
  26. " less ": "^2.5.3",
  27. " less-loader ": "^2.2.1",
  28. " style-loader ": "^0.13.0",
  29. " url-loader ": "^0.5.6",
  30. " webpack ": "^1.12.2"
  31. },
  32. " author ": "",
  33. " license ": ""
  34. }

执行node,安装packpage.json中的插件

npm install

     
     
     
     

这里写图片描述

下面就是项目开发中的代码了

根据个人习惯建立目录结构:
这里写图片描述


     
     
     
     
  1. 新建模块 js文件: hiDom .js
  2. 注:这里的 HiDoms节点名可以任意命名,但首字母必须大写

     
     
     
     
  1. import React from 'react';
  2. import '../less/common.less';
  3. export default class HiDoms extends React.Component{
  4. render(){
  5. return(
  6. < div className= "hiDoms" >
  7. hi react !
  8. div >
  9. )
  10. }
  11. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
新建js文件:index.js

     
     
     
     

     
     
     
     
  1. import $ from 'jquery';
  2. import React from 'react';
  3. import { render } from 'react-dom';
  4. import HiDoms from './hiDom';
  5. render(<HiDoms />, $( '#content')[ 0]);
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
新建html页面:index.html

     
     
     
     

     
     
     
     
  1. <head>
  2. <meta charset="UTF-8">
  3. <title>react demo title>
  4. head>
  5. <body>
  6. <div id="content"> div>
  7. body>
  8. html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
新建less文件:common.less

     
     
     
     

     
     
     
     
  1. .hiDoms {
  2. align-items: center;
  3. background: #ff6600;
  4. color: black;
  5. font-size: 32px;
  6. text-align: center;
  7. padding: 2px;
  8. }
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
完整的目录结构:

     
     
     
     

这里写图片描述

运行项目

     
     
     
     

这里写图片描述

开发模式 npm run start
生产模式 npm run build

最终网页效果:
这里写图片描述


            

你可能感兴趣的:(webpack + node.js + react 项目实例)