vue-cli多頁面

安裝vue-clicss

npm install -g vue-cli
//好比說個人項目放在d盤的project文件夾下
cd /d d:/project vue init webpack my-project cd my-project npm install npm run dev

 若是在npm install的時候遇到安裝出錯,多是npm的版本太低,輸入下面的代碼更新npm的版本html

npm install -g npm

 

多頁面vue

在pc端,須要實現多頁面開發。修改webpack的配置便可實現多頁入口。webpack

好比說,個人頁面結構是git

webpack
    |---build
    |---src
         |---assets 資源
         |---components組件
         |---module各個模塊
             |---index    index模塊
                    |---index.html
                    |---index.js
                    |---index.vue
             |---info       info模塊
                    |---info.html
                    |---info.js
                    |---info.vue  

 須要配置webpack.base.conf.js,在配置以前,在當前項目中先引入一個glob的依賴github

npm install glob --save-dev

而後再更改webpack.base.conf.js文件web

var glob = require('glob');
var entries = getEntry('./src/module/**/*.js'); // 得到入口js文件
function getEntry(globPath) {
  var entries = {},
    basename, tmp, pathname;

  glob.sync(globPath).forEach(function (entry) {
    basename = path.basename(entry, path.extname(entry));
    tmp = entry.split('/').splice(-3);
    pathname = tmp.splice(0, 1) + '/' + basename; // 正確輸出js和html的路徑
    entries[pathname] = entry;
  });
  console.log(entries);
  return entries;
}

module.exports = {
  entry: entries,
  ***
}

 再配置webpack.dev.conf.jsvue-cli

var glob = require('glob');
module.exports = merge(baseWebpackConfig, {
  devtool: '#eval-source-map',
  plugins: [
    new webpack.optimize.OccurenceOrderPlugin(),
    new webpack.HotModuleReplacementPlugin(),
    new webpack.NoErrorsPlugin()
  ]
})

function getEntry(globPath) {
  var entries = {},
    basename, tmp, pathname;

  glob.sync(globPath).forEach(function (entry) {
    basename = path.basename(entry, path.extname(entry));
    tmp = entry.split('/').splice(-3);
    pathname = tmp.splice(0, 1) + '/' + basename; // 正確輸出js和html的路徑
    entries[pathname] = entry;
  });
  console.log(entries);
  return entries;
}

var pages = getEntry('./src/module/**/*.html');

for (var pathname in pages) {
  // 配置生成的html文件,定義路徑等
  var conf = {
    filename: pathname + '.html',
    template: pages[pathname], // 模板路徑
    inject: true              // js插入位置
  };
  // 須要生成幾個html文件,就配置幾個HtmlWebpackPlugin對象
  module.exports.plugins.push(new HtmlWebpackPlugin(conf));
}

最後,修改webpack.prod.conf.jsnpm

var glob = require('glob');
module.exports = merge(baseWebpackConfig, {
  ***
  plugins: [
    ***
    new webpack.optimize.OccurenceOrderPlugin(),
    new ExtractTextPlugin(path.join(config.build.assetsSubDirectory, '[name].[contenthash].css'))
  ]
})

function getEntry(globPath) {
  var entries = {},
    basename, tmp, pathname;

  glob.sync(globPath).forEach(function (entry) {
    basename = path.basename(entry, path.extname(entry));
    tmp = entry.split('/').splice(-3);
    pathname = tmp.splice(0, 1) + '/' + basename; // 正確輸出js和html的路徑
    entries[pathname] = entry;
  });
  console.log(entries);
  return entries;
}

var pages = getEntry('./src/module/**/*.html');

for (var pathname in pages) {
  console.log(pathname);
  // 配置生成的html文件,定義路徑等
  var conf = {
    // filename: pathname + '.html',
    filename: pathname + '.html',
    template: pages[pathname], // 模板路徑
    inject: true              // js插入位置
  };
  // 須要生成幾個html文件,就配置幾個HtmlWebpackPlugin對象
  module.exports.plugins.push(new HtmlWebpackPlugin(conf));
}

若是還有什麼問題,能夠查看我在github上的項目ui

項目地址:

https://github.com/yaoyao1987/vue-cli-multipage

 

 

參考網址:

http://www.jianshu.com/p/f8e21d87a572

相關文章
相關標籤/搜索