react+webpack+es6详细配置教程
来源:互联网 发布:js怎么获取时间戳 编辑:程序博客网 时间:2024/06/11 17:19
环境搭建
- 创建一个空文件夹, 进入当前文件夹下命令行窗口, git bush here也可以. 输入命令
npm init
, 通通按回车, 最后会输出一个package.json, 现在打开该文件, 接着刚刚生成那些东西, 下面写上这些devDependencies里的那些依赖.
{ "name": "reacthome", "version": "1.0.0", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "author": "", "license": "ISC", "devDependencies": { "babel": "^6.23.0", "babel-core": "^6.26.0", "babel-loader": "^7.1.2", "babel-preset-es2015": "^6.24.1", "babel-preset-react": "^6.24.1", "css-loader": "^0.28.7", "file-loader": "^1.1.5", "less": "^2.7.3", "less-loader": "^4.0.5", "react": "^16.0.0", "react-dom": "^16.0.0", "style-loader": "^0.19.0", "url-loader": "^0.6.2", "webpack": "^3.8.1" }}
- 将devDependencies添加进package.json之后, 继续在当前目录下输入命令
npm install
, 网速不好得等一会不要着急. (如果之前没有用过webpack的同学, 要额外输入两个命令npm install webpack -g
和npm install webpack-dev-server -g
, 第一个是全局webpack命令, 第二个是开启服务器命令) 在该文件夹下创建文件
webpack.config.js
以及项目结构如下图
根目录下的src, src下还有三个文件夹, 分别为img, js, 和less.
根目录下的home.html(主页), webpack.config.js(webpack配置文件)在
webpack.config.js
下写入如下内容
const webpack = require('webpack');const providePlugin = new webpack.ProvidePlugin({$: 'jquery', jQuery: 'jquery', 'window.jQuery': 'jquery'});//引入jquery, 便于ajax请求module.exports = { entry : { home: './src/js/home.js',//如果文件, 如果有多个页面在下面多写几项就是了 }, output : {//打包输出文件 filename: '[name].js', publicPath: 'http://localhost:8080/out', path: __dirname + '/out', }, module : { rules: [//打包规则 {test : /\.less$/, use:['style-loader', 'css-loader', 'less-loader']}, { test : /\.js$/, loader : 'babel-loader', exclude : /node_modules/, query : { presets : [ require.resolve('babel-preset-es2015'), require.resolve('babel-preset-react'), ] } }, {test: /\.(jpg|png|gif|svg)$/, use: ['url-loader?limit=8192&name=./[name].[ext]']} ], }, devServer: {//服务器端口地址 port: 8080, inline: true,//自动刷新 }, plugins: [//jquery插件 providePlugin ],}
这里不对webpack配置做太多介绍, 有兴趣的同学可以看看我的这篇博客
webpack超详细配置, 使用教程(图文)
- 在src文件夹下创建home.js文件
至此环境搭建完毕!!!!!, 下面是react es6基本用法
react es6
home.html主页上写上基本框架
//home.html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>主页</title></head><body> <div id="demo"></div> <script src="http://localhost:8080/out/home.js"></script></body></html>
home.js上正式使用react
例子1: 基本用法
//home.jsimport React from 'react';import ReactDom from 'react-dom'; class HelloMessage extends React.Component{ render(){ return <h1>Hello {this.props.name}</h1>; } } class Output extends React.Component{ render(){ return ( <div> <HelloMessage name="John" /> </div> ); } } ReactDOM.render(<Output />, document.getElementById('demo'));
例子2: this.props.children
import React from 'react';import ReactDom from 'react-dom';class NotesList extends React.Component { render() { return ( <ol> { React.Children.map(this.props.children, (child) => {return <li>{child}</li>}) } </ol> ) }}ReactDOM.render( <NotesList> <span>hello</span> <span>world</span> </NotesList>, document.getElementById('demo'));
例子3: PropTypes和defaultProps 定义组件的属性类型和默认属性,统一使用static成员来实现
import React from 'react';import ReactDom from 'react-dom';class Video extends React.Component { static defaultProps = { autoPlay: false, maxLoops: 10, }; // 注意这里有分号 static propTypes = { autoPlay: React.PropTypes.bool.isRequired, maxLoops: React.PropTypes.number.isRequired, posterFrameSrc: React.PropTypes.string.isRequired, videoSrc: React.PropTypes.string.isRequired, }; // 注意这里有分号 render() { return ( <View /> ); } // 注意这里既没有分号也没有逗号}
例子4: ref属性 从组件获取真实 DOM节点
import React from 'react';import ReactDom from 'react-dom';class MyComponent extends React.Component { constructor(props){ super(props); this.handleClick = this.handleClick.bind(this) } handleClick(){ this.refs.myTextInput.focus() } render(){ return( <div> <input type="text" ref="myTextInput" /> <input type="button" value="Focus the text input" onClick={this.handleClick} /> </div> ) }}ReactDOM.render( <MyComponent />, document.getElementById('demo'));
注意上面的.bind(this), 如果不使用会出现获取不到this, 用箭头函数改写也可以
例子5: 组件状态机 this.state 将组件看成是一个状态机,一开始有一个初始状态,然后用户互动,导致状态变化,从而触发重新渲染 UI
import React from 'react';import ReactDom from 'react-dom';class LikeButton extends React.Component { constructor(props){ super(props); this.state = {//state初始化不必使用getInitialState函数, 直接在constructor函数中即可 liked: false, value: "crlin" } } handleClick(){ this.setState({ liked: !this.state.liked }) } handleChange(event){ this.setState({ value: event.target.value }) } render(){ let text = this.state.liked ? 'like' : 'haven\'t liked', value = this.state.value; return ( <div> <p onClick={this.handleClick.bind(this)}>You {text} this. Click to toggle.</p> <input type="text" value={value} onChange={this.handleChange.bind(this)} /> <p>{value}</p> </div> ); }}ReactDOM.render( <LikeButton />, document.getElementById('demo'));
最后附上一张react生命周期便于大家理解
阅读全文
0 0
- react+webpack+es6详细配置教程
- webpack+react+es6环境配置
- webpack+react+ES6 配置安装
- 初识react之react+webpack+es6环境配置步骤整理
- React +ES6 +Webpack入门
- React +ES6 +Webpack入门
- 详细的Webpack配置教程
- webpack.config.js v2 react + es6 +electron 配置
- react + webpack + ES6 环境搭建
- webpack超详细配置, 使用教程(图文)
- webpack超详细配置, 使用教程(图文)
- webpack超详细配置, 使用教程(图文)
- webpack超详细配置, 使用教程(图文)
- 一步一步进入React的世界(React+Webpack+ES6组合配置)
- 一步一步进入React的世界(React+Webpack+ES6组合配置)
- webpack教程,webpack+ES6+less视频教程
- React+ES6+Less+Bootstrap----webpack初探
- ES6+React+Webpack初步构建项目流程
- 利用python的pygame的模块来实现简单的飞机大战游戏
- Django官方教程(七)【创建你的第一个 Django 项目,第五部分】
- Java web程序员发展路径
- hdu 102 Fibonacci Again
- <TensorFlow Machine Learning Cookbook>学习笔记(1.4)
- react+webpack+es6详细配置教程
- 实时通讯音视频互动开发需求汇总
- Remove Element
- C语言文件读写操作
- Linux基本命令
- Matlab和Excel交互——数字和列名转换
- CNCC day3 迈向新一代人工智能(AI2.0)的多媒体计算
- HDU5071 chat
- HTML5与CSS3新增特性