最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

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

解決的問題:

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

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

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

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

第一個(gè) 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;
 }

第二個(gè) 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);
  }
 });
 }

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

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

添加入口文件配置

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)選項(xiàng)目)

注意看最外層的if判斷,添加了額外條件 如果是文件且后綴是.vue且不是App.vue的,則進(jìn)入判斷。否則,判斷是不是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);
  }
 });
}

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

您可能感興趣的文章:

相關(guān)文章

  • 給js文件傳參數(shù)(詳解)

    給js文件傳參數(shù)(詳解)

    這篇文章主要介紹了給js文件傳參數(shù)的方法,需要的朋友可以參考下
    2014-07-07
  • js中.sort()函數(shù)的常見用法與高級(jí)操作

    js中.sort()函數(shù)的常見用法與高級(jí)操作

    JavaScript中的sort函數(shù)可以用來對(duì)數(shù)組進(jìn)行排序,默認(rèn)情況下sort函數(shù)將數(shù)組中的元素轉(zhuǎn)換為字符串,并按照Unicode碼點(diǎn)的順序進(jìn)行排序,下面這篇文章主要給大家介紹了關(guān)于js中.sort()函數(shù)的常見用法與高級(jí)操作的相關(guān)資料,需要的朋友可以參考下
    2023-05-05
  • JS仿Windows開機(jī)啟動(dòng)Loading進(jìn)度條的方法

    JS仿Windows開機(jī)啟動(dòng)Loading進(jìn)度條的方法

    這篇文章主要介紹了JS仿Windows開機(jī)啟動(dòng)Loading進(jìn)度條的方法,實(shí)例分析了javascript操作html元素及對(duì)應(yīng)樣式實(shí)現(xiàn)特效的技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-02-02
  • 解決微信小程序中轉(zhuǎn)換時(shí)間格式IOS不兼容的問題

    解決微信小程序中轉(zhuǎn)換時(shí)間格式IOS不兼容的問題

    今天小編就為大家分享一篇關(guān)于解決微信小程序中轉(zhuǎn)換時(shí)間格式IOS不兼容的問題,小編覺得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來看看吧
    2019-02-02
  • JavaScript實(shí)現(xiàn)打字游戲

    JavaScript實(shí)現(xiàn)打字游戲

    這篇文章主要為大家詳細(xì)介紹了JavaScript實(shí)現(xiàn)打字游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-02-02
  • 原生JS檢測(cè)CSS3動(dòng)畫是否結(jié)束的方法詳解

    原生JS檢測(cè)CSS3動(dòng)畫是否結(jié)束的方法詳解

    這篇文章主要介紹了原生JS檢測(cè)CSS3動(dòng)畫是否結(jié)束的方法,結(jié)合實(shí)例形式分析了javascript事件響應(yīng)及針對(duì)css3屬性檢測(cè)相關(guān)操作技巧,需要的朋友可以參考下
    2019-01-01
  • JS遍歷ul下的li點(diǎn)擊彈出li的索引的實(shí)現(xiàn)方法

    JS遍歷ul下的li點(diǎn)擊彈出li的索引的實(shí)現(xiàn)方法

    這篇文章主要介紹了JS遍歷ul下的li點(diǎn)擊彈出li的索引的方法,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2016-09-09
  • javascript中call,apply,bind函數(shù)用法示例

    javascript中call,apply,bind函數(shù)用法示例

    這篇文章主要介紹了javascript中call,apply,bind函數(shù)用法,結(jié)合實(shí)例形式分析了call,apply,bind函數(shù)的功能、使用方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2016-12-12
  • JS實(shí)現(xiàn)隊(duì)列與堆棧的方法

    JS實(shí)現(xiàn)隊(duì)列與堆棧的方法

    這篇文章主要介紹了JS實(shí)現(xiàn)隊(duì)列與堆棧的方法,結(jié)合實(shí)例形式分析了JavaScript實(shí)現(xiàn)隊(duì)列與堆棧的原理與相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2016-04-04
  • XmlUtils JS操作XML工具類

    XmlUtils JS操作XML工具類

    經(jīng)常用到對(duì)xml的操作,Java里面有dom和dom4j等工具類,但是Javascript就沒有,所以自己寫了一個(gè),目前算作第一個(gè)版本吧。肯定還有很多地方需要改進(jìn),如果有需要用的朋友,可以把bug和需要完善改進(jìn)的地方留言或評(píng)論。
    2009-10-10

最新評(píng)論

娄烦县| 宁化县| 温州市| 容城县| 深水埗区| 通山县| 桐乡市| 广安市| 澎湖县| 洛隆县| 新巴尔虎右旗| 通山县| 塔河县| 鄢陵县| 泾阳县| 香港| 旬阳县| 望江县| 定南县| 马龙县| 姜堰市| 汝州市| 天长市| 青州市| 黄浦区| 抚远县| 阜康市| 师宗县| 渑池县| 肥城市| 江源县| 乐东| 建湖县| 禄劝| 黔西县| 屯昌县| 漳平市| 邛崃市| 罗田县| 景宁| 临高县|