建立一個目錄,使用npm
快速初始化javascript
$ mkdir my-project && npm init -y
安裝webpack
以及babel
html
$ npm install --save-dev webpack webpack-dev-server html-webpack-plugin babel-loader@8.0.0-beta.0 @babel/core @babel/preset-env @babel/plugin-transform-react-jsx
安裝Nerv前端
$ npm install --save nervjs
在項目根目錄下添加一個簡單的webpack配置文件webpack.config.js
java
const path = require('path') const HtmlWebpackPlugin = require('html-webpack-plugin') module.exports = { entry: './src/index.js', output: { path: path.resolve(__dirname, 'dist'), filename: 'bundle.js' }, module: { rules: [ { test: /\.js$/, use: 'babel-loader' } ] }, plugins: [ new HtmlWebpackPlugin({ filename: 'index.html', template: './index.html' }) ] }
在項目根目錄下添加一個babel的配置文件.babelrc
react
{ "presets": [ [ "@babel/env", { "spec": true, "useBuiltIns": false } ] ], "plugins": [ [ "@babel/plugin-transform-react-jsx", { "pragma": "Nerv.createElement" } ] ] }
在項目根目錄下添加一個入口html文件index.html
webpack
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Nerv App</title> </head> <body> <div id="app"></div> </body> </html>
而後就能夠書寫代碼了,新建一個src
目錄,添加一個Hello.js
文件git
import Nerv from 'nervjs' // import { Component, createElement } from 'nervjs' class Hello extends Nerv.Component { constructor () { super(...arguments) this.state = { message: 'world' } } render () { return ( <div> Hello, {this.state.message} </div> ) } } export default Hello
隨後在src
目錄下新建一個index.js
文件來調用Hello.js
github
import Nerv from 'nervjs' import Hello from './Hello' Nerv.render(<Hello />, document.getElementById('app'))
最後在package.json
文件的scripts
字段中增長web
"scripts": { "dev": "webpack-dev-server --config webpack.config.js" },
在項目根目錄下執行npm run dev
,就能在瀏覽器中看到效果了!npm
注意:使用的時候須要配合babel的@babel/plugin-transform-react-jsx插件來將JSX轉換的建立虛擬DOM的代碼替換成使用Nerv的API,使用方式以下
{ ... "plugins": [ ["@babel/plugin-transform-react-jsx", { "pragma": "Nerv.createElement" // 若是你 import { createElement } from 'nervjs' 的話,那這裏設置成 `createElement` 就好了 }] ] }
固然,若是你想避免從0開始進行webpack
與babel
配置,你能夠使用Athena2來進行開發
Athena2是一款基於webpack
的前端工程化開發工具,它能夠快速初始化一個新項目,內置項目所需的配置,對於普通需求基本能夠零配置開發使用,固然你也能夠自由地提供本身所須要的webpack配置。
相關使用請查看Athena2的使用文檔