vue-cli 搭建多页面

Posted 链乎社区

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vue-cli 搭建多页面相关的知识,希望对你有一定的参考价值。

命令行工具 (CLI)

Vue.js 提供一个官方命令行工具,可用于快速搭建大型单页应用。该工具提供开箱即用的构建工具配置,带来现代化的前端开发流程。只需几分钟即可创建并启动一个带热重载、保存时静态检查以及可用于生产环境的构建配置的项目:

# 全局安装 vue-cli
$ npm install --global vue-cli

# 创建一个基于 webpack 模板的新项目
$ vue init webpack 21dj-mobile

vue-cli 搭建多页面

// 公众号端为多页面,所以用不到 vue-router
Install vue-router? No

// ESLint 代码格式化
Use ESLint to lint your code? No

// 单元测试
Setup unit tests with Karma + Mocha? No
Setup e2e tests with Nightwatch? No

启动项目

# 进入项目目录
$ cd 21dj-mobile

# 安装npm
$ npm install

# 运行
$ npm run dev

访问 http://localhost:8080/ 就可以看到 Vue 启动页面

vue-cli 搭建多页面

打包项目

npm run build

这样就可以在项目目录下生成 dist 文件夹,项目页面及样式都存放在 dist 文件夹中。

vue-cli 搭建多页面


配置多个入口

修改 config/index.js

    moduleName: 'views',

vue-cli 搭建多页面

修改 /21dj-mobile/build/webpack.base.conf.js

var entries = utils.getMultiEntry('./src/' + config.moduleName + '/**/**/*.js'); // 获得入口js文件

// entry: {
//   app: './src/main.js'
// },
entry: entries,

如图所示:

vue-cli 搭建多页面

修改 21dj-mobile/build/utils.js , 添加 getMultiEntry 方法

var glob = require('glob');

//获取多级的入口文件
exports.getMultiEntry = function(globPath) {
    var entries = {},
        basename, tmp, pathname;

    glob.sync(globPath).forEach(function(entry) {
        basename = path.basename(entry, path.extname(entry));
        tmp = entry.split('/').splice(-4);
        var pathsrc = tmp[0] + '/' + tmp[1];
        if (tmp[0] == 'views') {
            pathsrc = tmp[1];
        }

        //console.log(pathsrc)
        pathname = pathsrc + '/' + basename; // 正确输出js和html的路径
        if (tmp[0] == 'src') {
            pathname = basename; // 正确输出js和html的路径
        }
        entries[pathname] = entry;
        //console.log(pathname + '-----------' + entry);
    });
    return entries;
}

代码简单说明:

// 给 globPath 赋值
globPath = './src/views/**/**/*.js'

遍历所有的src/views的所有含有.js 文件的文件夹

// 将 entry 按照 '/' 分割成数组,并获取数组的后四个
tmp = entry.split('/').splice(-4);

开发环境-多页面

修改 21dj-mobile/build/webpack.dev.conf.js

//注释 HtmlWebpackPlugin

// new HtmlWebpackPlugin({
//   filename: 'index.html',
//   template: 'index.html',
//   inject: true
// }),

添加遍历html方法,添加多个 HtmlWebpackPlugin

var pages = utils.getMultiEntry('./src/' + config.moduleName + '/**/**/*.html');
for (var pathname in pages) {
    // 配置生成的html文件,定义路径等
    var conf = {
        filename: pathname + '.html',
        template: pages[pathname], // 模板路径
        chunks: [pathname], // 每个html引用的js模块
        inject: true // js插入位置
    };
    // 需要生成几个html文件,就配置几个HtmlWebpackPlugin对象
    module.exports.plugins.push(new HtmlWebpackPlugin(conf));
}

vue-cli 搭建多页面

在 src 文件下 新建多个文件夹,如图所示:

vue-cli 搭建多页面

运行 dev 命令:

npm run dev

可以访问
http://localhost:8080/
http://localhost:8080/login.html
http://localhost:8080/home/list.html
http://localhost:8080/iconfont/list.html

vue-cli 搭建多页面

生产环境-多页面

修改 21dj-mobile/build/webpack.prod.conf.js

var entries = utils.getMultiEntry('./src/' + config.moduleName + '/**/**/*.js'); // 获得入口js文件
var chunks = Object.keys(entries);

注释掉 HtmlWebpackPlugin 和 CommonsChunkPlugin,添加自定义的 CommonsChunkPlugin 和 HtmlWebpackPlugin方法

new webpack.optimize.CommonsChunkPlugin({
        name: 'vendor',
        chunks: chunks,
        minChunks: 4 || chunks.length
    }),
//构建生成多页面的HtmlWebpackPlugin配置,主要是循环生成
var pages = utils.getMultiEntry('./src/' + config.moduleName + '/**/**/*.html');
for (var pathname in pages) {

    var conf = {
        filename: pathname + '.html',
        template: pages[pathname], // 模板路径
        chunks: ['vendor', pathname], // 每个html引用的js模块
        inject: true, // js插入位置
        hash: true
    };

    webpackConfig.plugins.push(new HtmlWebpackPlugin(conf));
}

运行 npm run build ,打包项目,运行结果:

vue-cli 搭建多页面

参考资料

vue2-cli-vux2-multe-page : https://github.com/bluefox1688/vue-cli-multi-page

vue-cli + webpack 多页面实例应用:
http://www.cnblogs.com/fengyuqing/p/vue_cli_webpack.html

全栈部落 区块链部落
vue-cli 搭建多页面
vue-cli 搭建多页面


扫描二维码

加入全栈部落



以上是关于vue-cli 搭建多页面的主要内容,如果未能解决你的问题,请参考以下文章

vue-cli创建的项目,配置多页面的实现方法

搭建移动端H5多页面脚手架

vue-cli + webpack 多页面实例应用

使用vue-cli 脚手架快速搭建单页面组件

脚手架(vue-cli)搭建之后的简单介绍

Vue-cli 2.X 如何配置多项目集成环境