/ fluxChatDemo / 系列 ——项目安装坑洼简要
第一部分
1、使用import引入时,路径选错
2、React.Component 注意大写 (极浅的坑都掉,原谅我初级中的初级~还是贴出来吧)
3、不知为何运行起来没有内容,都怪自己不熟就上路,以为以下这些代码是会自动被引入的,其实不然,虽然文件中没有显示的创建这2个文件,但使用webpack的插件能够生成[name].min.js,至于自动在页面中引入js的功能插件,这里是没有的。
<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
配置:
var path=require('path');
// var webpack=require('webpack'); 不需要
// import HtmlwebpackPlugin from 'html-webpack-plugin'; 错的
var HtmlwebpackPlugin=require('html-webpack-plugin');// 这个是对的 //定义了一些文件夹的路径
var ROOT_PATH=path.resolve(__dirname);
var APP_PATH=path.resolve(ROOT_PATH,'app');//将会合并app文件夹下的数个js成为一个
var BUILD_PATH=path.resolve(ROOT_PATH,'build'); module.exports={
//项目的文件夹 可以直接用文件夹名称 默认会找index.js 也可以确定是哪个文件名字
entry:APP_PATH,//这个路径根据上面定义文件夹的位置看来是设置在根目录下,所以需要在根目录下创建一个index.js
//所指定目录下,进行默认查找index.js。如根目录就找根目录的index.js,
//若指定再如app文件夹下,里边创建几个js文件其中一个index.js,则默认在此app目录下找index.js
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
配置:
作者:张轩
链接:https://zhuanlan.zhihu.com/p/20367175
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
在package.json里面配置一下运行的命令(npm支持自定义一些命令)
...
"scripts": {
"start": "webpack-dev-server --hot --inline"
},
...
"start": "./node_modules/.bin/webpack-dev-server --port 9080 --content-base ./ --hot --inline"
npm install babel-loader babel-preset-es2015 --save-dev
作者:张轩
链接:https://zhuanlan.zhihu.com/p/20367175
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
"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"
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]'
}]
},
var path=require('path');
// var webpack=require('webpack'); 不需要
// import HtmlwebpackPlugin from 'html-webpack-plugin'; 错的
// var HtmlwebpackPlugin=require('html-webpack-plugin');//这个是对的 //定义了一些文件夹的路径
var ROOT_PATH=path.resolve(__dirname);
var APP_PATH=path.resolve(ROOT_PATH);//默认查找根目录下的index.js
var BUILD_PATH=path.resolve(ROOT_PATH,'build'); module.exports={
//项目的文件夹 可以直接用文件夹名称 默认会找index.js 也可以确定是哪个文件名字
//entry:APP_PATH,这里不能再用路径了,而是应当一个具体的文件吧?报错bundle.js:588 Uncaught Error: Cannot find module "E:\current\REACT\fluxChatDemo-test"
entry:'./index.js',
output:{
path:BUILD_PATH,// __dirname + '/build',应该也行
filename:'bundle.js'
},
devServer:{
historyApiFallback:true,
hot:true,
inline:true,
progress:true,
},
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]'
}]
},
plugins:[
/*new HtmlwebpackPlugin({
title:'you can change the title anytime in webpack.config.js'
})*/
]
};
index.js:
import React from 'react';
import ReactDOM from 'react-dom'; import ChatApp from './js/components/ChatApp'; ReactDOM.render(
<ChatApp name="Nate"/>,
document.getElementById('react')
);
ChatApp.js
import React from 'react'; class ChatApp extends React.Component{
constructor(props){
super(props);
} render(){
return (
<h2>hello {this.props.name}</h2>
)
}
} 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:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<section id="react"></section> <script src="bundle.js"></script>
</body>
</html>
恭喜自己,成功了~截张图吧~
/ fluxChatDemo / 系列 ——项目安装坑洼简要的更多相关文章
- Xbin-Store(分布式商城)项目所用Linux服务系列 FastDFS安装(五)
系列 Xbin-Store(分布式商城)项目所用Linux服务系列 MySQL安装(一) Xbin-Store(分布式商城)项目所用Linux服务系列 Redis集群安装(二) Xbin-Store( ...
- day132:2RenMJ:MJ需求文档&MJ游戏流程&Egret白鹭引擎安装&TypeScript简要介绍
目录 1.麻将产品需求文档 2.麻将游戏流程 3.Egret白鹭引擎 4.TypeScript简要了解 5.TypeScript快速入门 1.麻将产品需求文档 1.麻将术语 1.名词术语 牌⼦: 序数 ...
- [转]gitlab cicd (二)系列之安装git-runner rpm安装方式
本文转自:https://blog.csdn.net/qq_21816375/article/details/84308748 本编是继gitlab cicd (一)系列之安装gitlb之后,基于安装 ...
- 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明)
系列文章 1. 开源一款强大的文件服务组件(QJ_FileCenter)(系列一) 2. 开源一款强大的文件服务组件(QJ_FileCenter)(系列二 安装说明) 3. 开源一款强大的文件服务组件 ...
- Docker 技术系列之安装多版本Mysql5.6和Mysql5.7
大家好,后面的就不是关于MAC专有的内容,基本是跟Java环境,基础技术方面有关.所以这个教程对于在linux系统还是macOS都是通用的,不用担心. 上一篇,我们安装好对应的Docker之后,感受到 ...
- Docker 技术系列之安装Docker Desktop for Mac
终于要进入到Docker技术系列了,感谢大家的持续关注. 为什么要选择Docker?因为Docker 轻巧快速,提供了可行.经济.高效的替代方案.举个例子,安装Nginx,Mysql,Redis等常用 ...
- 【tornado】系列项目(二)基于领域驱动模型的区域后台管理+前端easyui实现
本项目是一个系列项目,最终的目的是开发出一个类似京东商城的网站.本文主要介绍后台管理中的区域管理,以及前端基于easyui插件的使用.本次增删改查因数据量少,因此采用模态对话框方式进行,关于数据量大采 ...
- composer.json:项目安装!!!!!!!!!!
基本用法 基本用法 安装 composer.json:项目安装 关于 require Key 包名称 包版本 下一个重要版本(波浪号运算符) 稳定性 安装依赖包 composer.lock - 锁文件 ...
- 为SpringMvc项目安装BootStrap和AngularJs前端框架
在我们"用SpringMVC写一个注册的小Demo"之前,我们学习一下如何给该项目安装Bootstrap和AngularJs的前端框架,这样我们就能轻松排版出漂亮的登录界面.我们采 ...
随机推荐
- sql查询删除重复数据
数据库UserInfo 删除重复数据 即删除重复的用户名手机号 同一个用户名手机号只保留一个用户 01.根据多个字段查询重复数据 with data1 as( select MobilePhone,N ...
- js加载完所有的图片,适合电子相册哦~~~~
有些时候要一口气加载完所有的图片,所以代码就要这么写.... var imgArray = [ 'http://s16.mogucdn.com/p1/160202/upload_ifqwcmlcmyy ...
- ".NET Compact Framework v2.0 could not be found."
参考: http://blog.csdn.net/godcyx/article/details/7348431 问题原因: That's a known issue where VS can't di ...
- python 使用pymssql连接sql server数据库
python 使用pymssql连接sql server数据库 #coding=utf-8 #!/usr/bin/env python#------------------------------ ...
- Nginx + Tomcat Windows下的负载均衡配置
Nginx + Tomcat Windows下的负载均衡配置 一.为什么需要对Tomcat服务器做负载均衡? Tomcat服务器作为一个Web服务器,其并发数在300-500之间,如果超过50 ...
- 结合实例详细介绍encodeURI()、encodeURIComponent()、decodeURI()、decodeURIComponent()使用方法
在介绍encodeURI().encodeURIComponent().decodeURI().decodeURIComponent()方法前我们需要了解Global对象的概念: Global(全 ...
- MySQL--InnoDB索引原理详解
1 各种树形结构 本来不打算从二叉搜索树开始,因为网上已经有太多相关文章,但是考虑到清晰的图示对理解问题有很大帮助,也为了保证文章完整性,最后还是加上了这部分. 先看看几种树形结构: 1 搜索二叉树: ...
- 【转】Caffe初试(七)其它常用层及参数
本文讲解一些其它的常用层,包括:softmax-loss层,Inner Product层,accuracy层,reshape层和dropout层及它们的参数配置. 1.softmax-loss sof ...
- JQuery EasyUI DataGrid列表所见所得随意导出excel
1.抽取DataGrid列表数据 function ExportNormal(strXlsName, exportGrid, postUrl, hiddenColumns) { /// <sum ...
- NYOJ之题目325 zb的生日
-------------------------------------- 刷一辈子水题... AC代码: import java.util.Scanner; public class Main { ...