var tempData = [
{
FieldDes: "男",
FieldName: "Male",
Unit: "人",
Value: 4
}, {
FieldDes: "女",
FieldName: "Female",
Unit: "人",
Value: 3
}
]
let result = {}
tempData.forEach(item => result[item.FieldName] =item.Value)第一點(diǎn)總時(shí)間關(guān)系
排除一些影響因素,對(duì)于特定的一組任務(wù)來(lái)講,異步話費(fèi)總時(shí)間是這些任務(wù)中耗時(shí)最長(zhǎng)的哪一個(gè)任務(wù)的時(shí)間。同步是所有任務(wù)花費(fèi)時(shí)間的累加和。
第二個(gè)問(wèn)題
在瀏覽器引擎中,單線程,是指在JS引擎中負(fù)責(zé)解釋和執(zhí)行JavaScript代碼的線程只有一個(gè),這也是我們常說(shuō)的js是單線程的原因。
但是呢,在上述線程外,還存在其他的線程,比如:處理AJAX請(qǐng)求的線程、處理DOM事件的線程、定時(shí)器線程等等,也有人叫做工作線程。
工作流程是,js線程接受到一個(gè)異步ajax任務(wù),然后把這個(gè)ajax任務(wù)交給ajax線程,ajax線程接收到之后回復(fù)js線程說(shuō)收到了馬上處理,之后處理完成之后,再通知js線程說(shuō)處理完畢了,js線程接收到通知之后,再調(diào)用之前保存的隊(duì)列回調(diào)函數(shù)。
抱歉,手機(jī)不好打字
大概是這個(gè)原因?
你沒(méi)有按F5(或者command + R)?
你打印下params看看?
state.clickMenu=state.menus.filter(
...
))[0]
如果還有問(wèn)題,可能就需要檢查getter了
圖片也用upload組件包裹起來(lái)
<Upload
className={style['avatar-uploader']}
name='file'
showUploadList={false}
multiple={true}
data={this.getUploadToken()}
accept='.png,.jpg'
action='http://xxxxxx'
beforeUpload={this.beforeUpload.bind(this)}
onChange={this.handleUploadChange}
>
{
this.state.imageUrl
? <img src={this.state.imageUrl} className={style['avatar']} />
: <Icon type='plus' className={style['avatar-uploader-trigger']} />
}
</Upload>
你有沒(méi)有想過(guò)把babel和plugins放到build外面。。。
圖片不顯示無(wú)非就兩種情況:一種是資源找不到,一種是樣式問(wèn)題,其中樣式有可能是圖片無(wú)高寬、層疊過(guò)低被覆蓋等等!不過(guò)也有種奇葩情況,就是圖片資源剛剛大于limit值一點(diǎn)點(diǎn),如果該圖片多個(gè)地方使用,會(huì)出現(xiàn)有些地方也會(huì)打包成base64,有些地方不會(huì),那不會(huì)的地方就不會(huì)顯示,我們公司項(xiàng)目就遇到了這種奇葩情況。這說(shuō)明limit也會(huì)有微小誤差的。
疑惑:
圖片打包完引用路徑不應(yīng)該以‘/’開(kāi)頭嗎?您這邊是相對(duì)路徑,在css文件中應(yīng)該是找不到的。我這邊打包路徑是這樣的:
是以‘/’開(kāi)頭的。
腳手架:index.js有設(shè)置圖片打包路徑的。
只要
我的個(gè)人服務(wù)器結(jié)果展示:
疑惑點(diǎn):開(kāi)發(fā)用的靜態(tài)資源為什么放在這里面
這里面是靜態(tài)資源,不需要版本管理的,腳手架直接copy的,具體進(jìn)入webpack.prod.conf.js看看:
將您用于開(kāi)發(fā)的靜態(tài)資源移入src/assets下面
chrome瀏覽器的bug。只要你打開(kāi)控制臺(tái)就能觸發(fā)。否則觸發(fā)不了。
js的對(duì)象和字符串是不一樣的。對(duì)象是存在于堆空間,第一次的a和b相當(dāng)于是引用這個(gè)堆空間,所以改變a也就是改變了堆空間的內(nèi)容,自然b也跟著發(fā)生改變。而js的基本類型比如Number,string,boolean這些的,都是直接放在棧內(nèi)存中,聲明一個(gè)a就會(huì)有對(duì)應(yīng)的一個(gè)a的值,也就是說(shuō)第二個(gè)的a和b是完全兩個(gè)東西沒(méi)有一點(diǎn)聯(lián)系,僅僅是第一次把b的值賦值給a了。所以a改變不會(huì)影響b
你的access_token生成那塊多半有問(wèn)題。檢查一下緩存周期。你之所以刪掉runtime就好了多半是把a(bǔ)ccess_token緩存再里面了————然后他過(guò)期了、或者可能再其他地方被生成過(guò)覆蓋了(這是最坑的)。這時(shí)候緩存里的access_token其實(shí)已經(jīng)無(wú)效了你卻一直在用。刪掉runtime后代碼認(rèn)為沒(méi)有緩存就重新生成新的access_token那么自然就好了。
刪除deployed,重新創(chuàng)建
$("input[name='texts']")會(huì)把所有的name為texts的dom都得到,再調(diào)用attr操作,所有都應(yīng)用這個(gè)操作;
可以先保存 var $inputs = $("input[name='texts']"),然后克隆,最后再對(duì)$inputs操作
安卓的微信可能不顯示,蘋(píng)果的應(yīng)該能顯示吧
1、兩個(gè)查詢可以創(chuàng)建一個(gè)(type,year)的復(fù)合索引來(lái)用
2、查詢時(shí)間差異大是因?yàn)槟愕臈l件不一樣,索引檢索的順序規(guī)則要明白,第一條:順序檢索type索引,找到對(duì)應(yīng)的主鍵,再到表數(shù)據(jù)文件中查找滿足year>=2017的數(shù)據(jù),找到10條為止,由于2017之前還有很多數(shù)據(jù),比如2016的,順序檢索完所有2016才能找到2017的數(shù)據(jù),直到找到10條滿足條件的記錄。第二條:順序檢索type索引,找到10條記錄即可!這就是區(qū)別!!
app也是一個(gè)組件,也就是父組件
如問(wèn)題所示,存在兩個(gè)使用了webpack code-splitting 和 懶加載的路由文件,路由文件都使用了公用的public.js模塊。
// page/index/Index.vue 首頁(yè)路由文件
<template>首頁(yè)</template>
<script>
import pub from 'script/public'
...
</script>
// 用戶頁(yè)
// page/index/Index.vue 用戶頁(yè)路由文件
<template>用戶頁(yè)</template>
<script>
import pub from 'script/public'
...
</script>
要將 public.js公用模塊抽離,有兩種解決方案
CommonsChunkPlugin 具名模塊手動(dòng)將所有共用的模塊抽離在一個(gè)文件。
創(chuàng)建文件commons.js
// commons.js
import pub from 'public'
在webpack.config.js的CommonsChunkPlugin插件指定commons 的entry
// webpack.config.js
entry:{
main: 'src/main.js',
commons: 'src/commons.js'
},
...
new webpack.optimize.CommonsChunkPlugin({
name: "commons", // 和 entry的commons對(duì)應(yīng),
filename: 'common.bundle.js', // 抽離公共文件
minChunks: Infinity,
})
這樣,如果路由文件或其他模塊使用到了 commons.js中的模塊,都不會(huì)重復(fù)加載代碼,而是在common.bundle.js中獲取。
CommonsChunkPlugin 設(shè)置 children 屬性官方文檔CommonsChunkPlugin 中 children屬性解釋
Move common modules into the parent chunk
With Code Splitting, multiple child chunks of an entry chunk can have common dependencies. To prevent duplication these can be moved into the parent. This reduces overall size, but does have a negative effect on the initial load time. If it is expected that users will need to download many sibling chunks, i.e. children of the entry chunk, then this should improve load time overall.
可知,設(shè)置 children 為 true 可以將code-splitting的模塊的依賴模塊抽離到父模塊,這樣做的后果就是,確實(shí)抽離公用模塊,降低了代碼重復(fù),減少了代碼體積。但是同時(shí),抽離到父模塊,也意味著如果有一個(gè)懶加載的路由 ShopList.vue 沒(méi)有用到public.js 模塊,但是實(shí)際上引入了父模塊,也為這ShopList.vue也引入了public.js的代碼。
這就需要CommonsChunkPlugin的 async 屬性。
children 與 async 雙管齊下Extra async commons chunk
Similar to the above one, but instead of moving common modules into the parent (which increases initial load time) a new async-loaded additional commons chunk is used. This is automatically downloaded in parallel when the additional chunk is downloaded.
設(shè)置了async, 會(huì)將上述懶加載的路由文件公用的模塊代碼,抽離打包成一個(gè)單獨(dú)的文件,并且該文件是按需加載的,如果某個(gè)路由沒(méi)有使用到這些公用模塊,是不會(huì)加載進(jìn)來(lái)的。
舉個(gè)例子:
首頁(yè)路由模塊(訪問(wèn)路徑/index),引用了 public模塊
用戶路由模塊(訪問(wèn)路徑/user),引用了 public模塊
購(gòu)物車(chē)模塊(訪問(wèn)路徑/shop),沒(méi)有引用 public模塊
那么,打包生成的文件大概是
main.js - 根入口文件
index.js - 首頁(yè)路由文件
user.js - 用戶路由文件
shop.js - 購(gòu)物車(chē)路由文件
0.js - 抽離路由的公用模塊文件
訪問(wèn)url/index,加載的依賴文件是main.js + index.js + 0.js
訪問(wèn)url/user,加載的依賴文件是main.js + user.js + 0.js
訪問(wèn)url/shop,加載的依賴文件是main.js + shop.js
基本解決了 lazy load + code-splitting 情況下的公用模塊抽離。
以下附上簡(jiǎn)單的webpack.config.js配置代碼
entry: {
main: './src/main.js'
},
...
plugins: [
...
new webpack.optimize.CommonsChunkPlugin({
name: "main",
minChunks: 2,
children: true,
// deepChildren: true,
async: true,
})
]
commons-chunk-plugin
CommonChunkPlugin: Feature - Select statically imported modules from chunks that were created from a dynamic import (require.ensure / System.import / import(".."))
可以用PubSub發(fā)布訂閱事件機(jī)制來(lái)處理,這樣比較方便,通過(guò)props傳遞函數(shù)的方式也可以,不過(guò)層級(jí)深的時(shí)候比較麻煩
cnpm install uglifyjs-webpack-plugin --save-dev
const UglifyJsPlugin = require('uglifyjs-webpack-plugin');
new UglifyJsPlugin({
uglifyOptions: {
ie8: false,
ecma: 8,
mangle: true,
output: { comments: false },
compress: { warnings: false }
},
sourceMap: false,
cache: true,
parallel: os.cpus().length * 2
})
有插件不支持webpack4,看下你的package.json,更新下插件,看是不是(clean-webpack-plugin)
npm install --save-dev ***-plugin@next String#scan
2.5.1 :017 > '16DC203B5R'.scan(/(\d+)*([a-zA-Z]+)*/)
=> [["16", "DC"], ["203", "B"], ["5", "R"], [nil, nil]]
2.5.1 :010 > '01AB03F4F'.scan(/(\d+)*([a-zA-Z]+)*/)
=> [["01", "AB"], ["03", "F"], ["4", "F"], [nil, nil]]北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。