router是一個總的狀態(tài)管理,route是向router注冊路由與頁面關(guān)系的一個組件,NavLink是對router產(chǎn)生的 context.router 利用的一個組件。router只接受一個內(nèi)容區(qū)
<Router>
<div>
<div className='head'>
<Nav/>
</div>
<div className='body'>
<Route exact path="/" component={A} />
<Route path="/b" component={B} />
<Route path="/c" component={C} />
</div>
</div>
</Router>
可以這樣寫
progress-stream獲取上傳進度如果只是想在服務(wù)端獲取上傳進度,可以試下如下代碼。注意,這個模塊跟express、multer并不是強綁定關(guān)系,可以獨立使用。
var fs = require('fs');
var express = require('express');
var multer = require('multer');
var progressStream = require('progress-stream');
var app = express();
var upload = multer({ dest: 'upload/' });
app.post('/upload', function (req, res, next) {
// 創(chuàng)建progress stream的實例
var progress = progressStream({length: '0'}); // 注意這里 length 設(shè)置為 '0'
req.pipe(progress);
progress.headers = req.headers;
// 獲取上傳文件的真實長度(針對 multipart)
progress.on('length', function nowIKnowMyLength (actualLength) {
console.log('actualLength: %s', actualLength);
progress.setLength(actualLength);
});
// 獲取上傳進度
progress.on('progress', function (obj) {
console.log('progress: %s', obj.percentage);
});
// 實際上傳文件
upload.single('logo')(progress, res, next);
});
app.post('/upload', function (req, res, next) {
res.send({ret_code: '0'});
});
app.get('/form', function(req, res, next){
var form = fs.readFileSync('./form.html', {encoding: 'utf8'});
res.send(form);
});
app.listen(3000);
multipart類型,需要監(jiān)聽length來獲取文件真實大小。(官方文檔里是通過conviction事件,其實是有問題的)
// 獲取上傳文件的真實長度(針對 multipart)
progress.on('length', function nowIKnowMyLength (actualLength) {
console.log('actualLength: %s', actualLength);
progress.setLength(actualLength);
});
progress-stream獲取真實文件大小的bug?針對multipart文件上傳,progress-stream 實例子初始化時,參數(shù)length需要傳遞非數(shù)值類型,不然你獲取到的進度要一直是0,最后就直接跳到100。
至于為什么會這樣,應(yīng)該是 progress-steram 模塊的bug,看下模塊的源碼。當(dāng)length是number類型時,代碼直接跳過,因此你length一直被認(rèn)為是0。
tr.on('pipe', function(stream) {
if (typeof length === 'number') return;
// Support http module
if (stream.readable && !stream.writable && stream.headers) {
return onlength(parseInt(stream.headers['content-length'] || 0));
}
// Support streams with a length property
if (typeof stream.length === 'number') {
return onlength(stream.length);
}
// Support request module
stream.on('response', function(res) {
if (!res || !res.headers) return;
if (res.headers['content-encoding'] === 'gzip') return;
if (res.headers['content-length']) {
return onlength(parseInt(res.headers['content-length']));
}
});
});
https://github.com/expressjs/...
https://github.com/freeall/pr...
router的path值寫錯了,找不到這個路徑,導(dǎo)致組件內(nèi)容無法掛載.
emit的時候要帶上index和value啊,不然父組件不知道是哪個子組件傳上來的
這里的toString()方法不是這個實例obj內(nèi)的方法
是Object原型的方法
Object.prototype.toString()
https://developer.mozilla.org...
createSphere: function() {
var cosTheta = Math.random() * 2 - 1,
sinTheta = Math.sqrt(1 - cosTheta * cosTheta),
phi = Math.random() * 2 * Math.PI;
return {
x: this.SCATTER_RADIUS * sinTheta * Math.cos(phi),
y: this.SCATTER_RADIUS * sinTheta * Math.sin(phi),
z: this.SCATTER_RADIUS * cosTheta,
hue: Math.round(phi / Math.PI * 30)
};
},
參數(shù)方程
userservice.userInfo 是不是異步的?
可以使用std lib里的func (*Encoder) SetEscapeHTML即可.
指的是搜索城市嗎? 搜索城市就是根據(jù)關(guān)鍵字去遍歷所有城市,if唄.
遍歷用for循環(huán)啊.forEach還有其他的遍歷.
<select class="form-control selectpicker" id="identity">
<option data-content="<img src='/static/assets/images/zh.png' width='32' height='32' /><span style='vertical-align: middle;'>簡體中文</span>"></option>
<option data-content="<img src='/static/assets/images/usa.png' width='32' height='32' /><span style='vertical-align: middle;'>English</span>"></option>
</select>
原則上是沒有問題的。
setState中很重要的三個功能是:
而且并不是說只有setState才可以改變state。
你想問的是軟鍵盤喚起的時候影響布局的事情嗎?如果是,請繼續(xù)往下看:
在移動端,軟鍵盤彈出,是會改變屏幕的大小的,這是必然的,所以在移動端盡量不要使用fixed進行布局。對于影響布局的解決方案,通用的做法就是監(jiān)聽屏幕的resize事件,如果屏幕高度小于原始高度,則把fixed布局display:none;,恢復(fù)高度的時候還原display屬性。
NoEmitOnErrorsPlugin的官方中文文檔翻譯里還有這樣一段對于所有資源,統(tǒng)計資料(stat)的 emitted 標(biāo)識都是 false
webpacks配置參數(shù)中stats是用來配置輸出構(gòu)建日志級別的
看了下NoEmitOnErrorsPlugin的源碼部分,其中有這一段,捕獲到日志錯誤時,返回false,即不輸出錯誤日志
if(compilation.getStats().hasErrors())
return false;
--inline表示默認(rèn)內(nèi)聯(lián)模式運行,--progress表示輸出構(gòu)建過程。這部分發(fā)生錯誤時,其實應(yīng)該已經(jīng)報錯了,只是構(gòu)建錯誤應(yīng)該輸出到控制臺里了,而這里不中斷應(yīng)該是WDS本身啟用了watch模式的關(guān)系給圖片加一個時間戳參數(shù)唄
你這就是選擇$(".lllll>div")中的第一個div。
應(yīng)該這么寫
$(.lllll>div:first-child).click(function(){
//code
})升級到layerUI2.0以上的版本,直接用API控制,你會發(fā)現(xiàn)質(zhì)的飛躍
因為是寫在vue文件里。
會先經(jīng)過vue-loader編譯成 require('logo.png'),然后在經(jīng)過file-loader。
算了你自己看文檔吧。
zzzzz
左上角的x就是關(guān)瀏覽器的意思,你點返回才是回上個畫面
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
達內(nèi)教育集團成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
北大課工場是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國家深化產(chǎn)教融合/校企合作的政策,積極推進“中國制造2025”,實現(xiàn)中華民族偉大復(fù)興的升級產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項目經(jīng)理從事移動互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團項目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗,技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點難點突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。