個(gè)人習(xí)慣:一般的中小組件、有可能到處被調(diào)用的、css代碼量不多的,就基本把template/js/css寫在一個(gè).vue文件里。
找到問(wèn)題了,是因?yàn)樵诳蚣苤袠?gòu)造函數(shù)里自動(dòng)加載這個(gè)生成這個(gè)二維碼的方法。把它放在生成二維碼的方法里加載就會(huì)顯著的縮短這個(gè)時(shí)間
服務(wù)器端沒(méi)給訪問(wèn)權(quán)限吧
你好,使用CSS3的3D Transform可以實(shí)現(xiàn)的,但是只能在支持3D變幻的瀏覽器里做出來(lái),不過(guò)目前支持3D變幻的支持程度已經(jīng)非常好了,如果我沒(méi)記錯(cuò)的話,在IE10及以上的瀏覽器都是支持的
當(dāng)然,這種平滑的曲面是畫(huà)不出來(lái)的,但是你可以用很多小的小方片(也就是元素)來(lái)組合出這個(gè)效果
在3D變幻中會(huì)有一個(gè)3D坐標(biāo)系,X軸向右,Y軸向下,Z軸垂直屏幕向外
你只需要計(jì)算出每個(gè)小方塊在三維空間的位置,然后設(shè)置相應(yīng)的CSS屬性讓它放置在三維空間的位置就行了,但除此以外還需要每個(gè)小方塊在相應(yīng)的位置有一定的傾斜,具體傾斜多少就需要通過(guò)偏微分計(jì)算出來(lái)了。
關(guān)于CSS 3D變幻你可以參考《The Book Of CSS3》的相關(guān)章節(jié),也可以找其它相關(guān)資料。
我這里有個(gè)demo你可以參考一下:
<div>
<script>
var start = -3.14*2
var end = 3.14*2
var step = 0.24
var factor = 30
var f = (x,y) => 50 * (Math.sin(x) + Math.cos(y))
var z
for (var x = start; x < end; x += step) {
for (var y = start; y < end; y += step) {
z = f(x,y)
document.write(`
<span style="
background-color:hsl(${z},70%,50%);
transform: translate3d(${x*factor}px,${y*factor}px,${z}px) rotateY(${-Math.atan(Math.cos(x))}rad) rotateX(${Math.atan(-Math.sin(y))}rad)"></span>
`)
}
}
</script>
</div>
<style>
div {
margin: auto;
margin-top: 100px;
width: 500px;
height: 500px;
background-color: rgba(0,255,0,0.3);
transform: perspective(1000px) rotateX(80deg) rotateZ(0deg);
transform-style: preserve-3d;
transition: transform 30s linear;
}
div:hover {
transform: perspective(1000px) rotateX(580deg) rotateZ(1180deg);
}
span {
top: 50%;
left: 50%;
width: 8px;
height: 8px;
position: absolute;
background-color: red;
}
</style>
如果你不方便看的話,這里還有另一個(gè)在線的:
https://xieranmaya.github.io/...
上面說(shuō)的是一種方案,成本比較低,只要會(huì)CSS并且理解偏微分就可以了。但也有它自己的問(wèn)題,就是小方塊太多性能會(huì)比較差。
另一種方案就是合適WebGL,也就是類似于傳統(tǒng)3D游戲的開(kāi)發(fā),只不過(guò)你只用它來(lái)畫(huà)了一個(gè)三維空間的圖象。
用webstorm吧
不能返回一個(gè)數(shù)組
????是我電腦壞了??
index == this.selectedIndex
return index
不用進(jìn)行任何特殊設(shè)置,安裝好 apache 就可以訪問(wèn)
node 8.9 是需要make編譯安裝的.
執(zhí)行一下 sudo make && make install
web terminal必然要用到前后端的實(shí)時(shí)通信(想象一下運(yùn)行top或者ping命令),比如用到WebSocket的,tornado在這方面有著很好的支持,而Flask并不原生支持WebSocket,實(shí)現(xiàn)起來(lái)更加困難
防止重復(fù)點(diǎn)擊按鈕:可以采用一點(diǎn)擊一次后讓按鈕置灰,暫時(shí)不可以用,響應(yīng)結(jié)束后再可以用。
防止重復(fù)提交請(qǐng)求:可以采用請(qǐng)求隊(duì)列的方式,每次請(qǐng)求時(shí)檢查隊(duì)列中有無(wú)該請(qǐng)求,有則返回,無(wú)則提交,并將該請(qǐng)求添加到隊(duì)列,響應(yīng)完畢,將響應(yīng)的請(qǐng)求從隊(duì)列中移除。
推薦您看一下說(shuō)說(shuō)API的防重放機(jī)制
目前我們公司就采用這些方式!
1.首先,你可以直接在服務(wù)器上用babel-node啟動(dòng)app.js試試看。如果能起來(lái)說(shuō)明是forever的問(wèn)題
2.如果不能起來(lái),是不是你的babel-node的版本不對(duì)
webpack4.x開(kāi)始官方文檔是說(shuō)要安裝cli所以如果的在用4.+就需要卸載cli
npm uninstall -g webpack-cli
# 注釋給我這種小白提供參考
# 卸載 uninstall 可以簡(jiǎn)寫成 un
# 全局 -g 的完整寫法是 --global
# 現(xiàn)在問(wèn)題來(lái)了這樣真的卸載了webpack-cli嗎?
# 答案是沒(méi)有。到現(xiàn)在為止我還沒(méi)有發(fā)現(xiàn)那個(gè)webpack-cli是全局安裝的,至少官方文檔沒(méi)看到。
# 那就看下面怎么刪除局部webpack-cli
npm uninstall webpack-cli
# 仔細(xì)看你會(huì)發(fā)現(xiàn)去掉全局參數(shù) -g
# 這時(shí)候你的命令行會(huì)快速滾動(dòng)一些刪除信息。
# webpack-cli刪除成功
npm uninstall -g webpack
# 這個(gè)注釋還是給小白看的
# 為什么要局部全局刪除webpack
# 因?yàn)槟憧赡茉诎惭bwebpack時(shí)不確定自己是全局安裝
# 還是本地安裝,所以建議先執(zhí)行全局刪除命令
# 然后在執(zhí)行下面的本地刪除命令
npm un webpack
# 這時(shí)候小白的webpack是刪除完成了
# 還沒(méi)完看下面怎么說(shuō)
ls
# 用ls命令查看一下是否有這幾個(gè)文件
# node_modules
# package-lock.json
# package.json
# 有是最好的,如果沒(méi)有那你可能還沒(méi)找到自己本地安裝webpack的準(zhǔn)確位置
# 有時(shí)候我也找不到了
# 現(xiàn)在說(shuō)有的事
rm -rf node_modules package-lock.json package.json
# 上面這行命令是刪除這些文件的意思
# 同學(xué)你的webpack 徹底刪除干凈了
# 但是小白一定要好好去了解一下 rm 和 rm -rf 的區(qū)別,在這里我不科普怕說(shuō)錯(cuò)。
接下來(lái)讓我告訴你安裝webpack4.+的正確方式
其實(shí)官方文檔說(shuō)的很清楚了,但是有點(diǎn)細(xì)節(jié)要注意。
創(chuàng)建一個(gè)新的本地項(xiàng)目目錄名為webpack-demo
mkdir webpack-demo
進(jìn)入目錄
cd webpack-demo
創(chuàng)建package.json文件
npm init -y
安裝webpack
# 要安裝最新版本或特定版本,請(qǐng)運(yùn)行以下命令之一:
# 第一個(gè)安裝方式默認(rèn)安裝最新版本
npm install --save-dev webpack
# 第二個(gè)安裝方式是安裝你需要的版本
npm install --save-dev webpack@<version>
安裝webpack-cli
npm install --save-dev webpack-cli
# 不要忘記webpack4.+開(kāi)始webpack-cli是必備的哦
檢查webpack是否安裝成功
node_modules/.bin/webpack -v
# 執(zhí)行了這個(gè)命令以后會(huì)輸出一個(gè)版本號(hào)
# 我的是4.11.1,因?yàn)閣ebpack在不斷更新所以我們的版本號(hào)會(huì)有點(diǎn)區(qū)別,不是什么問(wèn)題
好了webpack的卸載和安裝就到這了,喜歡我的可以點(diǎn)一個(gè)關(guān)注。我是一個(gè)喜歡編程的小白
千日醉蘭
ctrl+c試一下,可能沒(méi)卡過(guò)來(lái)
錯(cuò)誤信息不是說(shuō)你沒(méi)權(quán)限嗎
代碼沒(méi)有問(wèn)題,我自己運(yùn)行了一下,結(jié)果是對(duì)的。看是不是vs的特殊設(shè)置之類的。
另外,提醒一點(diǎn),if語(yǔ)句的表達(dá)式是不需要加括號(hào)的。
if k > 0:
res = k + fn(k-1)因?yàn)楹芏嗲闆r為了滿足需求,會(huì)需要在url上面加上params或者query參數(shù)
特別是url地址還會(huì)經(jīng)過(guò)轉(zhuǎn)碼處理顯示在瀏覽器上
Echarts 貌似沒(méi)這樣的配置項(xiàng)。
我寫了個(gè)另類的方法可以試試
// 鼠標(biāo)退出
myChart.on('mouseout', function (params) {
setBrush(params.name)
});
// 設(shè)置豎線
function setBrush(focus) {
myChart.dispatchAction({
type: 'brush',
areas: [
{
brushType: 'lineX',
coordRange: [focus, focus],
xAxisIndex: 0
}
]
});
}
完整實(shí)例代碼:
var upColor = '#00da3c';
var downColor = '#ec0000';
function splitData(rawData) {
var categoryData = [];
var values = [];
var volumes = [];
for (var i = 0; i < rawData.length; i++) {
categoryData.push(rawData[i].splice(0, 1)[0]);
values.push(rawData[i]);
volumes.push([i, rawData[i][4], rawData[i][0] > rawData[i][1] ? 1 : -1]);
}
return {
categoryData: categoryData,
values: values,
volumes: volumes
};
}
function calculateMA(dayCount, data) {
var result = [];
for (var i = 0, len = data.values.length; i < len; i++) {
if (i < dayCount) {
result.push('-');
continue;
}
var sum = 0;
for (var j = 0; j < dayCount; j++) {
sum += data.values[i - j][1];
}
result.push(+(sum / dayCount).toFixed(3));
}
return result;
}
$.get('data/asset/data/stock-DJI.json', function (rawData) {
var data = splitData(rawData);
myChart.setOption(option = {
backgroundColor: '#fff',
animation: false,
legend: {
bottom: 10,
left: 'center',
data: ['Dow-Jones index', 'MA5', 'MA10', 'MA20', 'MA30']
},
tooltip: {
trigger: 'axis',
// backgroundColor: 'rgba(245, 245, 245, 0.8)',
borderWidth: 1,
borderColor: '#ccc',
padding: 10,
textStyle: {
color: '#000'
},
// extraCssText: 'width: 170px'
},
axisPointer: {
link: {xAxisIndex: 'all'},
label: {
backgroundColor: '#777'
}
},
toolbox: {
feature: {
dataZoom: {
yAxisIndex: false
},
brush: {
type: ['lineX', 'clear']
}
}
},
brush: {
xAxisIndex: 'all',
brushLink: 'all',
outOfBrush: {
colorAlpha: 1
}
},
visualMap: {
show: false,
seriesIndex: 5,
dimension: 2,
pieces: [{
value: 1,
color: downColor
}, {
value: -1,
color: upColor
}]
},
grid: [
{
left: '10%',
right: '8%',
height: '50%'
},
{
left: '10%',
right: '8%',
top: '63%',
height: '16%'
}
],
xAxis: [
{
type: 'category',
data: data.categoryData,
scale: true,
boundaryGap : false,
axisLine: {onZero: false},
splitLine: {show: false},
splitNumber: 20,
min: 'dataMin',
max: 'dataMax',
axisPointer: {
z: 100
}
},
{
type: 'category',
gridIndex: 1,
data: data.categoryData,
scale: true,
boundaryGap : false,
axisLine: {onZero: false},
axisTick: {show: false},
splitLine: {show: false},
axisLabel: {show: false},
splitNumber: 20,
min: 'dataMin',
max: 'dataMax'
// axisPointer: {
// label: {
// formatter: function (params) {
// var seriesValue = (params.seriesData[0] || {}).value;
// return params.value
// + (seriesValue != null
// ? '\n' + echarts.format.addCommas(seriesValue)
// : ''
// );
// }
// }
// }
}
],
yAxis: [
{
scale: true,
splitArea: {
show: true
}
},
{
scale: true,
gridIndex: 1,
splitNumber: 2,
axisLabel: {show: false},
axisLine: {show: false},
axisTick: {show: false},
splitLine: {show: false}
}
],
dataZoom: [
{
type: 'inside',
xAxisIndex: [0, 1],
start: 98,
end: 100
},
{
show: true,
xAxisIndex: [0, 1],
type: 'slider',
top: '85%',
start: 98,
end: 100
}
],
series: [
{
name: 'Dow-Jones index',
type: 'candlestick',
data: data.values,
itemStyle: {
normal: {
color: upColor,
color0: downColor,
borderColor: null,
borderColor0: null
}
},
},
{
name: 'MA5',
type: 'line',
data: calculateMA(5, data),
smooth: true,
lineStyle: {
normal: {opacity: 0.5}
}
},
{
name: 'MA10',
type: 'line',
data: calculateMA(10, data),
smooth: true,
lineStyle: {
normal: {opacity: 0.5}
}
},
{
name: 'MA20',
type: 'line',
data: calculateMA(20, data),
smooth: true,
lineStyle: {
normal: {opacity: 0.5}
}
},
{
name: 'MA30',
type: 'line',
data: calculateMA(30, data),
smooth: true,
lineStyle: {
normal: {opacity: 0.5}
}
},
{
name: 'Volume',
type: 'bar',
xAxisIndex: 1,
yAxisIndex: 1,
data: data.volumes
}
]
}, true);
// 鼠標(biāo)退出
myChart.on('mouseout', function (params) {
setBrush(params.name)
});
// 設(shè)置豎線
function setBrush(focus) {
myChart.dispatchAction({
type: 'brush',
areas: [
{
brushType: 'lineX',
coordRange: [focus, focus],
xAxisIndex: 0
}
]
});
}
});spa出現(xiàn)白屏很正常,因?yàn)槟阏麄€(gè)項(xiàng)目所有的頁(yè)面都打包在js中了,特別是你的項(xiàng)目模塊越多,這種問(wèn)題越明顯,你所需要做的就是優(yōu)化頁(yè)面,使用異步加載,就好像我們使用ajax一樣,請(qǐng)求了再加載,未請(qǐng)求就不要加載相關(guān)的數(shù)據(jù)。只加載一些dom,特別是圖片等多媒體資源,出現(xiàn)在首頁(yè)要用預(yù)加載或者lazyload來(lái)處理。你可以跟你們的后臺(tái)商量一下,首頁(yè)的dom后臺(tái)來(lái)渲染。
這里可以給這些js文件添加了defer屬性,可以提高部分性能。
最簡(jiǎn)單的方法就是將以控制loading的js單獨(dú)摘出來(lái),這樣整體的運(yùn)行就不收其它js文件的影響了
北大青鳥(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)師。