前言

接到任务是写个 h5 页面,瞬间心中呼啸而过了一排火车,当时就想狠狠甩自己一巴掌,玩个球,之前3月份搞事儿写个网站编辑器,早点完成一个 h5 编辑器这里不久省事儿了么,于是寻思着怎么写一个 h5 编辑器。

对于 h5 编辑器,我是蛮熟悉的,此前专门调研过易企秀的内容,深知一个 h5 编辑器到底是什么样子的,这不就打算实现以下了。

导言

本章的主体内容并不涉及 h5 编辑器的实际编写,此处是做一定的配置。

我寻思着,自己的博客里面也没有写什么和 webpack 相关的内容,于是这里就先放一个基础的webpack配置吧。

文件的主要结构大致如下:

|-/
  package.json
  .babelrc
  index.html
  -src/
    main.js
    main.scss
  -config/
    devserver.js
    webpack.dev.js

1. package.json

首先生成 package.json ,这里很多新人都会搞混 dependence 和 devdependence,很多就完全都安装到 dependence里面去了,其实按照 npm 那边的说法, dev抬头的依赖是仅在开发阶段使用的,比如 babel,webpack 等都属于这个范畴。

我大致做了如下配置:

{
  "name": "h5",
  "version": "1.0.0",
  "description": "a h5 builder",
  "main": "index.js",
  "keywords": [
    "h5"
  ],
  "author": "icepro",
  "license": "MIT",
  "devDependencies": {
    "babel-core": "^6.26.3",
    "babel-loader": "^7.1.4",
    "babel-preset-stage-2": "^6.24.1",
    "css-loader": "^0.28.11",
    "node-sass": "^4.9.0",
    "sass-loader": "^7.0.1",
    "style-loader": "^0.21.0",
    "webpack": "^4.6.0",
    "webpack-cli": "^2.1.2",
    "webpack-dev-server": "^3.1.3",
    "babel-preset-es2015": "^6.24.1",
    "html-webpack-plugin": "^3.2.0"
  },
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "dev": "node ./config/devserver.js"
  },
  "dependencies": {
    "jquery": "^3.3.1"
  }
}

主要添加一些依赖,基本要用的依赖都已经放上去了(后续再添加会继续说明),在dev的配置中,我们使用编写的 devserver 去实时编译并输出内容,随后让我们开始编写 webpack 文件。

2. webpack

首先我们要注意版本,这里我是用的是 4.0 版本,所以大家在使用的时候,主要大版本有差异。

const webpack = require('webpack');
const path = require('path');
const HtmlWebpackPlugin = require('html-webpack-plugin')
 
module.exports = {
    mode: "development",
    entry: {
        'app': [path.resolve(__dirname, "../src/main.js")]
    },
    output: {
        path: path.resolve(__dirname, '../build'),
        publicPath: "/",
        filename: 'js/[name][hash].js'
    },
    module: {
        rules: [{
            test: /\.scss$/,
            loader: ['style-loader', 'css-loader', 'sass-loader']
        }, {
            test: /\.js$/,
            exclude: /node_modules/,
            loader: 'babel-loader'
        }]
    },
    plugins: [
        new HtmlWebpackPlugin({
            filename: 'index.html',
            template: path.resolve(__dirname, './../index.html'),
            inject: true, 
            chunks: ['app']
        }),
    ]
}

3. 配置devserver

作为一个前端想要所见即所得,是每一个前端的梦想,这里我们优先配置一下 devserver,这个由于我只需要最简单的配置,所以这里devserver用的几乎是最简单的配置:

const webpack = require('webpack');
const WebpackDevServer = require('webpack-dev-server')
var config = require("./webpack.dev.js");
// 这里读取的config的entry作为入口,当然多入口的话需要遍历添加,这个自行解决吧
config.entry.app.unshift("webpack-dev-server/client?http://localhost:8080/");
var compiler = webpack(config);
var server = new WebpackDevServer(compiler);
server.listen(8080);

ip也用的是固定的ip。

结尾

然后让我们运行一下 npm run dev 这样基本的环境就搭建完成了

本文标题:[h5] 写个h5编辑器有多难?[0]

永久链接:https://iceprosurface.com/2018/05/01/2018/h5/h5-0/

作者授权:本文由 icepro 原创编译并授权刊载发布。

版权声明:本文使用「署名-非商业性使用-相同方式共享 4.0 国际」创作共享协议,转载或使用请遵守署名协议。

查看源码: