第一部分

1、使用import引入时,路径选错

2、React.Component 注意大写 (极浅的坑都掉,原谅我初级中的初级~还是贴出来吧)

3、不知为何运行起来没有内容,都怪自己不熟就上路,以为以下这些代码是会自动被引入的,其实不然,虽然文件中没有显示的创建这2个文件,但使用webpack的插件能够生成[name].min.js,至于自动在页面中引入js的功能插件,这里是没有的。

  1. <script src="react.min.js"></script>
    <script src="index.min.js"></script>

第二部分

1、目标:把两个js文件合并成一个文件;自动快速生成HTML

平时的做法:自己在build文件夹里面手动建一个index.html文件夹,然后再把合并以后的js引用在里面,但是这样有点麻烦。

现在只需要加个插件:html-webpack-plugin

安装:首先npm init创建一个package.json文件(其中的scripts下的start是什么意思还不是特别明白,我先没填),再安装webpack:npm install webpack

接着就可以安装插件了 npm install html-webpack-plugin --save-dev

配置:

  1. var path=require('path');
    // var webpack=require('webpack'); 不需要
    // import HtmlwebpackPlugin from 'html-webpack-plugin'; 错的
    var HtmlwebpackPlugin=require('html-webpack-plugin');// 这个是对的
  2.  
  3. //定义了一些文件夹的路径
    var ROOT_PATH=path.resolve(__dirname);
    var APP_PATH=path.resolve(ROOT_PATH,'app');//将会合并app文件夹下的数个js成为一个
  1. var BUILD_PATH=path.resolve(ROOT_PATH,'build');
  2.  
  3. module.exports={
    //项目的文件夹 可以直接用文件夹名称 默认会找index.js 也可以确定是哪个文件名字
    entry:APP_PATH,//这个路径根据上面定义文件夹的位置看来是设置在根目录下,所以需要在根目录下创建一个index.js
      //所指定目录下,进行默认查找index.js。如根目录就找根目录的index.js,
      //若指定再如app文件夹下,里边创建几个js文件其中一个index.js,则默认在此app目录下找index.js
  1. output:{
    path:BUILD_PATH,
    filename:'bundle.js'
    },
    plugins:[
    new HtmlwebpackPlugin({
    title:'you can change the title anytime in webpack.config.js'
    })
    ]
    };

几个注意事项:

A、头部引入的问题,见代码

B、path.resolve方法是nodejs里的方法。需要引入path模块。CommonJS风格:var path = require('path');

path.resolve([from ...], to) from参数代表源路径,to代表将被解析到绝对路径的字符串

C、entry:默认会找index.js  也可以自己指定是哪个文件名。entry可以直接设置路径地址如entry:{index:'./index.js'}

运行:webpack

D、合并文件中,如果app文件夹下要合并的文件之间,没有关联,没有用module.exports=name;或export default name导出,并且也没有在默认的entry文件中引入(CommonJs风格的require或es6的import方法),那么就无法合并成功。

验证:在目录下发现自动生成了build文件夹,里边有index.html和bundle.js。具体文件位置路径怎么指定,多加查看并敲打,熟悉了就好。目标达成了,成功生成html,合并js,html引入了js,js被执行了。by the way, 好神奇~!

第三部分

为什么要配置 webpack-dev-server

解释:开发服务器,可以serve我们pack以后的代码,并且当代码更新的时候自动刷新浏览器

安装:npm install webpack-dev-server --save-dev

配置:

module.exports = { .... devServer: { historyApiFallback: true, hot: true, inline: true, progress: true, }, ... }
作者:张轩
链接:https://zhuanlan.zhihu.com/p/20367175
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
至于package.json为何还要修改,回答不上来,先记着吧:

在package.json里面配置一下运行的命令(npm支持自定义一些命令)

  1. ...
  2. "scripts": {
  3. "start": "webpack-dev-server --hot --inline"
  4. },
  5. ...
此时的命令改为:npm start
http://localhost:8080/ 查看  应该是webpack-dev-server默认的端口为8080,如果要指定别的:
  1. "start": "./node_modules/.bin/webpack-dev-server --port 9080 --content-base ./ --hot --inline"
 
 
 
第四部分 添加ES6的支持
 
安装各种loader:

  1. npm install babel-loader babel-preset-es2015 --save-dev
配置config文件:
... { test: /\.jsx?$/, loader: 'babel', include: APP_PATH, query: { presets: ['es2015'] } }, ...
作者:张轩
链接:https://zhuanlan.zhihu.com/p/20367175
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
 
es2015这个参数是babel的plugin,可以支持各种最新的es6的特性,具体的情况看这个链接。Babel es2015 plugin http://babeljs.io/docs/plugins/preset-es2015/
 
现在可以改掉CommonJS风格的文件。不过我目前是把app文件下那两个测试文件保留着,在根目录下创建一个index.js,文件里是有关react的且是用es6风格写的,正好用上,看可行不可行。
 
确保使用babel转义,在webpack.config.js中配置好,且安装了这项依赖模块。
 
迫不及待npm start查看结果。
 
使用react所需要的还有:看看哪个没有补上再npm start、、
  1. "babel-core": "^6.6.5",
    "babel-loader": "^6.2.4",
    "babel-preset-es2015": "^6.6.0",
    "babel-preset-react": "^6.5.0",
    "babel-preset-stage-0": "^6.3.13",
    "classnames": "^2.2.3",
    "css-loader": "^0.23.1",
    "flux": "^2.1.1",
    "keymirror": "^0.1.1",
    "react": "^0.14.7",
    "react-dom": "^0.14.7",
    "react-router": "^2.0.0",
    "style-loader": "^0.13.0",
    "webpack": "^1.12.14",
    "webpack-dev-server": "^1.14.1"
在这些都准备好之后,运行报错:Cannot resolve module 'index.js'
 
http://stackoverflow.com/questions/37506714/module-not-found-error-cannot-resolve-module-module-mongodb-while-bundling-w
这篇文章还没看完,就发现自己module loaders是不是忘写了。。如下:
  1. module:{
    loaders:[{
    test:/\.js?$/,
    loader:'babel',
    exclude: /(node_modules|bower_components)/,
    query: {
    presets: ['react', 'es2015', 'stage-0']
    }
    },{
    test:/\.css$/,
    loader:'style!css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]'
    }]
    },
 
 
第四部分是想,使用es6来写文件,因此安装了如上的依赖,总的来说,要安装各样的依赖、并随后立即把webpack.config.js的配置改一下如loaders、如文件路径指明等。
有个问题是,目前还不知道如何获取htmlwebpackplugin自动生成页面的id,所以,先手动在根目录下设定了一个index.html,并且把new HtmlwebpackPlugin的插件配置删掉。
当前的webpack.config.js修改如下:
 (
webpack的配置,多数是这两篇:
https://zhuanlan.zhihu.com/p/20367175
http://www.infoq.com/cn/articles/react-and-webpack?utm_source=tuicool
及参照 github搜索fluxDemoChat下的webpack.config.js的配置 
而成的
)
 
  1. var path=require('path');
  2. // var webpack=require('webpack'); 不需要
  3. // import HtmlwebpackPlugin from 'html-webpack-plugin'; 错的
  4. // var HtmlwebpackPlugin=require('html-webpack-plugin');//这个是对的
  5.  
  6. //定义了一些文件夹的路径
  7. var ROOT_PATH=path.resolve(__dirname);
  8. var APP_PATH=path.resolve(ROOT_PATH);//默认查找根目录下的index.js
  9. var BUILD_PATH=path.resolve(ROOT_PATH,'build');
  10.  
  11. module.exports={
  12. //项目的文件夹 可以直接用文件夹名称 默认会找index.js 也可以确定是哪个文件名字
  13. //entry:APP_PATH,这里不能再用路径了,而是应当一个具体的文件吧?报错bundle.js:588 Uncaught Error: Cannot find module "E:\current\REACT\fluxChatDemo-test"
  14. entry:'./index.js',
  15. output:{
  16. path:BUILD_PATH,// __dirname + '/build',应该也行
  17. filename:'bundle.js'
  18. },
  19. devServer:{
  20. historyApiFallback:true,
  21. hot:true,
  22. inline:true,
  23. progress:true,
  24. },
  25. module:{
  26. loaders:[{
  27. test:/\.js?$/,
  28. loader:'babel',
  29. exclude: /(node_modules|bower_components)/,
  30. query: {
  31. presets: ['react', 'es2015', 'stage-0']
  32. }
  33. },{
  34. test:/\.css$/,
  35. loader:'style!css-loader?modules&importLoaders=1&localIdentName=[name]__[local]___[hash:base64:5]'
  36. }]
  37. },
  38. plugins:[
  39. /*new HtmlwebpackPlugin({
  40. title:'you can change the title anytime in webpack.config.js'
  41. })*/
  42. ]
  43. };

index.js:

  1. import React from 'react';
  2. import ReactDOM from 'react-dom';
  3.  
  4. import ChatApp from './js/components/ChatApp';
  5.  
  6. ReactDOM.render(
  7. <ChatApp name="Nate"/>,
  8. document.getElementById('react')
  9. );

ChatApp.js

  1. import React from 'react';
  2.  
  3. class ChatApp extends React.Component{
  4. constructor(props){
  5. super(props);
  6. }
  7.  
  8. render(){
  9. return (
  10. <h2>hello {this.props.name}</h2>
  11. )
  12. }
  13. }
  14.  
  15. export default ChatApp;

index.html报错:

bundle.js:8866 Uncaught Invariant Violation: _registerComponent(...): Target container is not a DOM element.

原因:

出现此错误的原因是我将webpack生成的js文件放在了head,此时DOM还没有建立完毕,因此出现 not a DOM element 的错误,所以将js文件放在HTML底部就可以了。http://blog.csdn.net/cc7756789w/article/details/52083548

之前练习过的经验是,webpack会生成你所指定的output的文件位置和文件名,只需要引入到index.html就行,但是根目录中肉眼是看不见这个output指定的文件的。因此index.html:

  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <title></title>
  6. </head>
  7. <body>
  8. <section id="react"></section>
  9.  
  10. <script src="bundle.js"></script>
  11. </body>
  12. </html>

恭喜自己,成功了~截张图吧~

感恩~感谢神~因为我的自学全仰赖祂~智慧属祂。
 
 
 
 
 
 
 
 
 
 
 

/ fluxChatDemo / 系列 ——项目安装坑洼简要的更多相关文章

  1. Xbin-Store(分布式商城)项目所用Linux服务系列 FastDFS安装(五)

    系列 Xbin-Store(分布式商城)项目所用Linux服务系列 MySQL安装(一) Xbin-Store(分布式商城)项目所用Linux服务系列 Redis集群安装(二) Xbin-Store( ...

  2. day132:2RenMJ:MJ需求文档&MJ游戏流程&Egret白鹭引擎安装&TypeScript简要介绍

    目录 1.麻将产品需求文档 2.麻将游戏流程 3.Egret白鹭引擎 4.TypeScript简要了解 5.TypeScript快速入门 1.麻将产品需求文档 1.麻将术语 1.名词术语 牌⼦: 序数 ...

  3. [转]gitlab cicd (二)系列之安装git-runner rpm安装方式

    本文转自:https://blog.csdn.net/qq_21816375/article/details/84308748 本编是继gitlab cicd (一)系列之安装gitlb之后,基于安装 ...

  4. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明)

    系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...

  5. Docker 技术系列之安装多版本Mysql5.6和Mysql5.7

    大家好,后面的就不是关于MAC专有的内容,基本是跟Java环境,基础技术方面有关.所以这个教程对于在linux系统还是macOS都是通用的,不用担心. 上一篇,我们安装好对应的Docker之后,感受到 ...

  6. Docker 技术系列之安装Docker Desktop for Mac

    终于要进入到Docker技术系列了,感谢大家的持续关注. 为什么要选择Docker?因为Docker 轻巧快速,提供了可行.经济.高效的替代方案.举个例子,安装Nginx,Mysql,Redis等常用 ...

  7. 【tornado】系列项目(二)基于领域驱动模型的区域后台管理+前端easyui实现

    本项目是一个系列项目,最终的目的是开发出一个类似京东商城的网站.本文主要介绍后台管理中的区域管理,以及前端基于easyui插件的使用.本次增删改查因数据量少,因此采用模态对话框方式进行,关于数据量大采 ...

  8. composer.json:项目安装!!!!!!!!!!

    基本用法 基本用法 安装 composer.json:项目安装 关于 require Key 包名称 包版本 下一个重要版本(波浪号运算符) 稳定性 安装依赖包 composer.lock - 锁文件 ...

  9. 为SpringMvc项目安装BootStrap和AngularJs前端框架

    在我们"用SpringMVC写一个注册的小Demo"之前,我们学习一下如何给该项目安装Bootstrap和AngularJs的前端框架,这样我们就能轻松排版出漂亮的登录界面.我们采 ...

随机推荐

  1. Android二维码的生成,解析以及扫描功能

    <1> 布局只有2个按钮,实现生成二维码和解析二维码 <Button android:layout_width="wrap_content" android:la ...

  2. 《转载》跟我学SpringMVC

    在线版目录 第一章 Web MVC简介 第二章 Spring MVC入门 第三章 DispatcherServlet详解 第四章 Controller接口控制器详解(1) 第四章 Controller ...

  3. PHP 链接多种数据库 的方法

    数据库中  单词之间的空格(一个语句前面和后面做字符串拼接的时候最好留空格 )  可以随便加   其他地方  禁止随便加空格!!(加了 就报错)! =====================总结=== ...

  4. asp.net mvc ajax FileUpload

    //后台代码 [HttpPost] public ActionResult CreateCategory(HttpPostedFileBase file) { string url = Upload( ...

  5. sh5.while 脚本练习

    脚本编程: 顺序结构 选择结构 if, case 循环结构 for,while,until while循环:适用于循环次数未知的场景 语法: while CONDITION;do statement ...

  6. 顺序查找SequentialSearch

    #include <stdio.h>int SequentialSearch(int *a,int n,int x);int main(void){ //num代表查找的数 int num ...

  7. Ajax请求跨域问题 -- 转载

    几乎每种浏览器都存在默认的安全机制,都有同源策略,因为浏览器恶意的把每个外部请求的都当做是黑客攻击,相当于是对自身的保护,所以浏览器在运行脚本时会判断脚本与请求的页面是否是同一来源,这个同一来源,包括 ...

  8. Duilib源码分析(六)整体流程

    在<Duilib源码分析(一)整体框架>.<Duilib源码分析(二)控件构造器—CDialogBuilder>以及<Duilib源码分析(三)XML解析器—CMarku ...

  9. PowerDesigner导出SQL脚本

    1. 先创建E-R图模型

  10. 安装sqoop

    安装sqoop 1.默认已经安装好java+hadoop 2.下载对应hadoop版本的sqoop版本 3.解压安装包 tar zxvf sqoop-1.4.6.bin__hadoop-2.0.4-a ...