• 炮制数万斤毒豆芽 广州三个黑作坊被警方捣毁 2019-08-02
  • 2018年5月后期资助项目结项名单 2019-08-01
  • 女性之声——全国妇联 2019-07-31
  • 你才是“蠢货”!土地是自然存在的地球的一部分,并不是人类劳动成果,哪来价值?土地不是劳动成果,没有价值,正如空气和阳光不是劳动成果,没有价值一样。懂吗... 2019-07-31
  • 学习贯彻落实习近平总书记重要讲话精神·奥一网(oeeee.com) 2019-07-23
  • 新生儿6种异常不用慌 2019-07-15
  • 海尔发行境外上市外资股获批 2019-07-15
  • 朝鲜将变得很富有?外媒驱动引擎是中国而非美国 2019-07-12
  • 【加拿大房产网加拿大新房加拿大房产信息网】 2019-06-22
  • 中美研究人员发现新型狗流感病毒 2019-05-29
  • 豫园商城升级改造:这些楼顶可见最好的风景--旅游频道 2019-05-14
  • 头条 —频道 春城壹网 七彩云南 一网天下 2019-05-14
  • 人为某种意识而奋斗是幸福的,获得成绩或成就更幸福。 2019-05-10
  • 【专题】省违反中央八项规定精神和“四风”问题线索举报平台 2019-05-09
  • 确定这是热身赛?吴前拼到大腿抽筋 拆绷带继续干 2019-05-09
  • 建立多页面vue.js项目

    介绍

    根据需求,我们希望建立一个多页面的vue.js项目,如何改造单页面vue.js项目为多页面项目?跟着我的步伐看下去吧.

    1.创建单页面vue.js项目

    简单的记录一下创建步骤:

    --安装cnpm
    npm install -g cnpm --registry=https://registry.npm.taobao.org
    --安装vue-cli
    npm install -g vue-cli
    --安装webpack并新增目录
    vue init webpack sp-demo01
    --进入项目目录
    cd sp-demo01
    --更新
    npm install
    --运行
    npm run dev
    --构建
    npm run build
    

      

    2.配置路由映射

    在utils.js文件末尾添加如下代码,用于自动建立路由映射,如下图:

     

    // glob是webpack安装时依赖的一个第三方???,还??樵市砟闶褂?*等符号, 例如lib/*.js就是获取lib文件夹下的所有js后缀名的文件
    var glob = require('glob')
    // 页面模板
    var HtmlWebpackPlugin = require('html-webpack-plugin')
    // 取得相应的页面路径,因为之前的配置,所以是src文件夹下的pages文件夹
    var PAGE_PATH = path.resolve(__dirname, '../src/pages')
    // 用于做相应的merge处理
    var merge = require('webpack-merge')
    
    // 多入口配置
    // 通过glob??槎寥ages文件夹下的所有对应文件夹下的js后缀文件,如果该文件存在
    // 那么就作为入口处理
    exports.entries = function () {
      let startPath = 'src/pages/'
      // 应该读取js文件,但是这里限定js与html文件名一致,所以读取html文件
      var entryFiles = glob.sync(PAGE_PATH + '/**/*.html')
      var map = {}
      entryFiles.forEach((filePath) => {
        var dirPath = filePath.substring(0, filePath.lastIndexOf('/'))
        var dirName = dirPath.substring(dirPath.lastIndexOf('/') + 1)
        var filename = filePath.substring(filePath.lastIndexOf(startPath) + startPath.length, filePath.lastIndexOf('/'))
        if (filename.endsWith(dirName)) {
          map[filename] = filePath.substring(0, filePath.lastIndexOf('.html')) + '.js'
        }
      })
      console.log(map)
      return map
    }

     

    修改webpack.base.conf.js文件内容,在启动时调用映射方法,如下图:

     

     

    3.配置页面映射

    在utils.js文件末尾添加如下代码,用于自动建立页面映射,如下图:

     

    // 多页面输出配置
    // 与上面的多页面入口配置相同,读取pages文件夹下的对应的html后缀文件,然后放入数组中
    exports.htmlPlugin = function () {
      let entryHtml = glob.sync(PAGE_PATH + '/**/*.html')
      let startPath = 'src/pages/'
      let arr = []
      entryHtml.forEach((filePath) => {
        let filename = filePath.substring(filePath.lastIndexOf(startPath) + startPath.length, filePath.lastIndexOf('/'))
        let conf = {
          // 模板来源
          template: filePath,
          // 文件名称
          filename: filename + '.html',
          // 页面模板需要加对应的js脚本,如果不加这行则每个页面都会引入所有的js脚本
          chunks: ['manifest', 'vendor', filename],
          inject: true
        }
        if (process.env.NODE_ENV === 'production') {
          conf = merge(conf, {
            minify: {
              removeComments: true,
              collapseWhitespace: true,
              removeAttributeQuotes: true
            },
            chunksSortMode: 'dependency'
          })
        }
        arr.push(new HtmlWebpackPlugin(conf))
      })
      console.log(arr)
      return arr
    }
    

     

    在启动时调用页面映射方法,如下图:

     

     

     

     

    4.注意 

    1.由于代码中的限制,如下图所示,test2.html与test2.js名称一致,test3.html与test3.js名称一致,所以每个页面的js与html文件必须一致。

    2.由于代码中的限制,如下图所示,所有页面必须在src/pages目录下。

    3.以上2个问题可自行修改步骤2与3中的代码进行自定义。

    5.完整结构,如下图:

     

    6.test3页面

     

     

     

     

     

     

     7.Test3与Test1运行效果

     

     

     

    posted @ 2019-04-22 17:22 吃西瓜的星星 阅读(...) 评论(...) 编辑 收藏
  • 炮制数万斤毒豆芽 广州三个黑作坊被警方捣毁 2019-08-02
  • 2018年5月后期资助项目结项名单 2019-08-01
  • 女性之声——全国妇联 2019-07-31
  • 你才是“蠢货”!土地是自然存在的地球的一部分,并不是人类劳动成果,哪来价值?土地不是劳动成果,没有价值,正如空气和阳光不是劳动成果,没有价值一样。懂吗... 2019-07-31
  • 学习贯彻落实习近平总书记重要讲话精神·奥一网(oeeee.com) 2019-07-23
  • 新生儿6种异常不用慌 2019-07-15
  • 海尔发行境外上市外资股获批 2019-07-15
  • 朝鲜将变得很富有?外媒驱动引擎是中国而非美国 2019-07-12
  • 【加拿大房产网加拿大新房加拿大房产信息网】 2019-06-22
  • 中美研究人员发现新型狗流感病毒 2019-05-29
  • 豫园商城升级改造:这些楼顶可见最好的风景--旅游频道 2019-05-14
  • 头条 —频道 春城壹网 七彩云南 一网天下 2019-05-14
  • 人为某种意识而奋斗是幸福的,获得成绩或成就更幸福。 2019-05-10
  • 【专题】省违反中央八项规定精神和“四风”问题线索举报平台 2019-05-09
  • 确定这是热身赛?吴前拼到大腿抽筋 拆绷带继续干 2019-05-09
  • 云南时时下载手机版 贵州11选5走势图删除 浙江l5选5开奖结果 快乐赛计划怎么看 极速11选5计划全天 上海时时开奖结果表 爱彩乐彩票下载 20183d全年试机号与开奖号 河北11选5走势图基本走势图跨度 好彩3投注宝典 大乐透中奖查询 ag电子 求新时时高手一起玩 333彩票app 北京赛车开奖记录直播 河南11选五5开奖结果走势图