欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解weex默認(rèn)webpack.config.js改造

 更新時間:2018年01月08日 10:21:03   作者:虛光  
本篇文章主要介紹了詳解weex默認(rèn)webpack.config.js改造,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

本文介紹了weex默認(rèn)webpack.config.js改造,分享給大家,具體如下:

解決的問題:

由于weex默認(rèn)的webpack配置,會導(dǎo)致在src文件夾下的每一個.vue在temp文件夾下生成對應(yīng)的一個.js文件,該js文件有一段這樣的代碼

contents += 'var App = require(\'' + relativePath + '\')\n';
 contents += 'App.el = \'#root\'\n';
 contents += 'new Vue(App)\n';

會導(dǎo)致多個vue對象掛載同一個id(#root),導(dǎo)致整個頁面就只有一個vue對象,無法像寫spa項目一樣寫weex項目,因此在這里對webpack.cofig進行改造(添加一個entry.js入口js文件,和一個最外層的App.vue承載路由渲染)

默認(rèn)的webpack.config.js文件中,有兩個方法

第一個 getEntryFileContent

const getEntryFileContent = (entryPath, vueFilePath) => {
 let relativePath = pathTo.relative(pathTo.join(entryPath, '../'), vueFilePath);
 let contents = '';
 /**
  * The plugin's logic currently only supports the .we version
  * which will be supported later in .vue
  */
 if (hasPluginInstalled) {
  const plugindir = pathTo.resolve('./web/plugin.js');
  contents = 'require(\'' + plugindir + '\') \n';
 }
 if (isWin) {
  relativePath = relativePath.replace(/\\/g, '\\\\');
 }
 contents += 'var App = require(\'' + relativePath + '\')\n';
 contents += 'App.el = \'#root\'\n';
 contents += 'new Vue(App)\n';
 return contents;
 }

第二個 walk

const walk = (dir) => {
 dir = dir || '.';
 const directory = pathTo.join(__dirname, 'src', dir);
 fs.readdirSync(directory).forEach((file) => {
  const fullpath = pathTo.join(directory, file);
  const stat = fs.statSync(fullpath);
  const extname = pathTo.extname(fullpath);
  if (stat.isFile() && extname === '.vue' || extname === '.we') {
  if (!fileType) {
   fileType = extname;
  }
  if (fileType && extname !== fileType) {
   console.log('Error: This is not a good practice when you use ".we" and ".vue" togither!');
  }
  const name = pathTo.join(dir, pathTo.basename(file, extname));
  if (extname === '.vue') {
   const entryFile = pathTo.join(vueWebTemp, dir, pathTo.basename(file, extname) + '.js');
   fs.outputFileSync(pathTo.join(entryFile), getEntryFileContent(entryFile, fullpath));
   entry[name] = pathTo.join(__dirname, entryFile) + '?entry=true';
  }
  weexEntry[name] = fullpath + '?entry=true';
  } else if (stat.isDirectory() && file !== 'build' && file !== 'include') {
  const subdir = pathTo.join(dir, file);
  walk(subdir);
  }
 });
 }

這兩個方法,是遍歷src中的.vue文件,然后在temp文件夾中生成一個相對應(yīng)的JS文件

如果我們采用傳統(tǒng)的vue開發(fā),需要一個入口.js文件,我們需要對這個配置進行改造

添加入口文件配置

const entry = {index: pathTo.resolve('src', 'entry.js')};
const weexEntry = {index: pathTo.resolve('src', 'entry.js')};

刪除或者更改配置(當(dāng)然,第三種方法還可以把.vue組件不寫在src內(nèi))

刪除

  1. 刪除getEntryFileContent函數(shù)
  2. 刪除walk函數(shù)
  3. 刪除walk() walk函數(shù)的調(diào)用

修改(代碼來自github上高仿網(wǎng)易嚴(yán)選項目)

注意看最外層的if判斷,添加了額外條件 如果是文件且后綴是.vue且不是App.vue的,則進入判斷。否則,判斷是不是page文件夾,如果不是,則結(jié)束。

function walk(dir) {
 dir = dir || '.';
 const directory = pathTo.join(__dirname, 'src', dir);
 fs.readdirSync(directory)
 .forEach((file) => {
  const fullpath = pathTo.join(directory, file);
  const stat = fs.statSync(fullpath);
  const extname = pathTo.extname(fullpath);
  const basename = pathTo.basename(fullpath);
  console.log("配置",file,fullpath,stat,extname,basename,)
  if (stat.isFile() && extname === '.vue' && basename != 'App.vue' ) {
  if (!fileType) {
   fileType = extname;
  }
  if (fileType && extname !== fileType) {
   console.log('Error: This is not a good practice when you use ".we" and ".vue" togither!');
  }
  const name = pathTo.join(dir, pathTo.basename(file, extname));
  if (extname === '.vue') {
   const entryFile = pathTo.join(vueWebTemp, dir, pathTo.basename(file, extname) + '.js');
   fs.outputFileSync(pathTo.join(entryFile), getEntryFileContent(entryFile, fullpath));
   entry[name] = pathTo.join(__dirname, entryFile) + '?entry=true';
  }
   weexEntry[name] = fullpath + '?entry=true';
  } else if (stat.isDirectory() && ['build','include','assets','filters','mixins'].indexOf(file) == -1 ) {
  const subdir = pathTo.join(dir, file);
  walk(subdir);
  }
 });
}

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

您可能感興趣的文章:

相關(guān)文章

  • javascript 二分法(數(shù)組array)

    javascript 二分法(數(shù)組array)

    擴展Array對象,為其添加二分法查找功能,提高查找效率。
    2010-04-04
  • 原生Js與jquery的多組處理, 僅展開一個區(qū)塊的折疊效果

    原生Js與jquery的多組處理, 僅展開一個區(qū)塊的折疊效果

    同一個頁面, 有多組(不固定), 每組區(qū)塊數(shù)量不一定一樣的小區(qū)塊. 要求每次只展開一個區(qū)塊,需要的朋友可以參考下。
    2011-01-01
  • js判斷主流瀏覽器類型和版本號的簡單實現(xiàn)代碼

    js判斷主流瀏覽器類型和版本號的簡單實現(xiàn)代碼

    下面小編就為大家?guī)硪黄猨s判斷主流瀏覽器類型和版本號的簡單實現(xiàn)代碼。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-05-05
  • 你可能不知道的package.json屬性詳解

    你可能不知道的package.json屬性詳解

    package.json俗稱依賴配置文件(我自己取的名),最主要的作用就是管理項目中所用到的依賴,下面這篇文章主要給大家介紹了關(guān)于package.json屬性的相關(guān)資料,需要的朋友可以參考下
    2022-02-02
  • js實現(xiàn)彈框效果

    js實現(xiàn)彈框效果

    這篇文章主要為大家詳細(xì)介紹了js實現(xiàn)彈框效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-03-03
  • JS基于for語句編寫的九九乘法表示例

    JS基于for語句編寫的九九乘法表示例

    這篇文章主要介紹了JS基于for語句編寫的九九乘法,涉及for語句循環(huán)輸出結(jié)合table表格布局實現(xiàn)九九乘法功能的相關(guān)操作技巧,需要的朋友可以參考下
    2018-01-01
  • JavaScript實現(xiàn)圖片局部放大鏡交互功能

    JavaScript實現(xiàn)圖片局部放大鏡交互功能

    在網(wǎng)頁設(shè)計和開發(fā)中,圖片局部放大鏡交互功能是一個常見的需求,它可以增強用戶體驗,讓用戶更仔細(xì)地查看圖片的細(xì)節(jié),本文將介紹如何使用JavaScript來實現(xiàn)這一功能,以及提供代碼示例和詳細(xì)解釋,需要的朋友可以參考下
    2023-10-10
  • 微信小程序?qū)崿F(xiàn)倒計時調(diào)用相機自動拍照功能

    微信小程序?qū)崿F(xiàn)倒計時調(diào)用相機自動拍照功能

    這篇文章主要為大家詳細(xì)介紹了微信小程序?qū)崿F(xiàn)倒計時調(diào)用相機自動拍照功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • JS代碼格式化和語法著色V2

    JS代碼格式化和語法著色V2

    JS代碼格式化和語法著色V2...
    2006-10-10
  • javascript設(shè)計模式--策略模式之輸入驗證

    javascript設(shè)計模式--策略模式之輸入驗證

    策略模式中的策略就是一種算法或者業(yè)務(wù)規(guī)則,將這些策略作為函數(shù)進行封裝,并向外提供統(tǒng)一的調(diào)用執(zhí)行,本文給大家介紹javascript設(shè)計模式--策略模式之輸入驗證,需要的朋友參考下
    2015-11-11

最新評論