0 NO 前后端分離是趨勢(shì),但是也還存在問(wèn)題(例如SEO,搜索引擎難以識(shí)別等),短時(shí)間內(nèi)不可能取代不分離的
1 主要區(qū)別是,數(shù)據(jù)和表現(xiàn)分離,只需要靜態(tài)的html和動(dòng)態(tài)的接口(例如jsp),數(shù)據(jù)在瀏覽器端實(shí)現(xiàn)動(dòng)態(tài)加載
2 理想情況是,先出文檔(前后端都認(rèn)可),然后后端、前端都按照文檔來(lái),一切以接口規(guī)定的為準(zhǔn)
3 跟端口沒一毛錢關(guān)系,重點(diǎn)在于接口!靠 API 來(lái)分離前后端,解決前后端大團(tuán)隊(duì)、多版本、復(fù)雜功能協(xié)作的問(wèn)題
補(bǔ)充:
可以參考淘寶前端的設(shè)計(jì),在 java 接口和 html 輸出之前用 NodeJS 代理一層,暫時(shí)能解決 SEO 的問(wèn)題
定義好了接口,前端就可以用不用等后端,直接用模擬的數(shù)據(jù)格式,方便地進(jìn)行前端測(cè)試了
說(shuō)重點(diǎn),API 相比前后端混寫、模板引擎之類的東西的好處:
方便設(shè)計(jì)、開發(fā)、測(cè)試(前端不再需要依賴后端,后端也不需要依賴前端,就可以各干各的,獨(dú)立測(cè)試代碼)
方便記錄和統(tǒng)計(jì)功能使用(后端相同功能的入口位置統(tǒng)一,不同功能的位置也可以合理有序地組織)
方便修改和版本控制等(后端可以提供多版本的 API,不需要修改已有代碼,不影響已有 API 的功能)
最重點(diǎn)的是:
你的Team要是分工不明確、人少、功能簡(jiǎn)單直接、代碼修改不多,就完全不需要分離,就醬。
最明顯的:
前端代碼不用被后端粘貼來(lái)粘貼去了,后端的相同代碼,也不需要各種位置粘貼來(lái)粘貼去了。
隱藏的好處:
到時(shí)候出了問(wèn)題,照著 API 設(shè)計(jì)文檔一對(duì)比,就知道是前端用的不對(duì),還是后端寫的不對(duì),分分鐘找到背鍋俠。
Update 2017/10/13:
其實(shí)很有一個(gè)很大的優(yōu)勢(shì)忘了說(shuō)……
以后網(wǎng)站的功能,要做Windows、Mac、Android、IOS、Linux的客戶端,或者需要做成批量處理的腳本,或者需要和別的什么系統(tǒng)對(duì)接,什么微信公眾號(hào)、小程序之類的,等等等等……
有API在就能瞬間解決問(wèn)題!就這個(gè)提供給前端的API!一樣的!調(diào)用這個(gè)接口就行了!
別用偽類,換成單獨(dú)元素
只要找到View(ViewHolder)顯示隱藏的調(diào)用函數(shù),就能計(jì)算出每個(gè)View(ViewHolder)的顯示時(shí)長(zhǎng)。
很幸運(yùn)的時(shí),RecyclerView提供了這樣的接口函數(shù),而且還是兩對(duì)接口函數(shù):
1.RecyclerView#Adapter提供了一對(duì)函數(shù):onViewAttachedToWindow(VH)和onViewDetachedFromWindow(VH)
public abstract static class Adapter<VH extends ViewHolder> {
... ...
/**
* Called when a view created by this adapter has been attached to a window.
*
* <p>This can be used as a reasonable signal that the view is about to be seen
* by the user. If the adapter previously freed any resources in
* {@link #onViewDetachedFromWindow(RecyclerView.ViewHolder) onViewDetachedFromWindow}
* those resources should be restored here.</p>
*
* @param holder Holder of the view being attached
*/
public void onViewAttachedToWindow(VH holder) {
}
/**
* Called when a view created by this adapter has been detached from its window.
*
* <p>Becoming detached from the window is not necessarily a permanent condition;
* the consumer of an Adapter's views may choose to cache views offscreen while they
* are not visible, attaching and detaching them as appropriate.</p>
*
* @param holder Holder of the view being detached
*/
public void onViewDetachedFromWindow(VH holder) {
}
... ...
}
2.RecyclerView提供了OnChildAttachStateChangeListener接口:
public interface OnChildAttachStateChangeListener {
/**
* Called when a view is attached to the RecyclerView.
*
* @param view The View which is attached to the RecyclerView
*/
void onChildViewAttachedToWindow(View view);
/**
* Called when a view is detached from RecyclerView.
*
* @param view The View which is being detached from the RecyclerView
*/
void onChildViewDetachedFromWindow(View view);
}
上面的兩對(duì)接口函數(shù),根據(jù)情況選用其一就好了,基本實(shí)現(xiàn)邏輯:
AttachedToWindow被調(diào)用時(shí)的時(shí)間戳,一個(gè)用來(lái)保存顯示的總時(shí)長(zhǎng)DetachedFromWindow被調(diào)用時(shí),計(jì)算與AttachedToWindow的時(shí)間戳差值,并將AttachedToWindow的時(shí)間戳清零,然后總時(shí)長(zhǎng)加上這個(gè)差值AttachedToWindow后,DetachedFromWindow未被調(diào)用前,只需獲取當(dāng)前系統(tǒng)時(shí)間戳,然后計(jì)算與AttachedToWindow的時(shí)間戳差值,再加上總時(shí)長(zhǎng),就是總時(shí)長(zhǎng)github ElemeFE.
Element UI
餓了么出的 桌面組件庫(kù)
現(xiàn)在你是“客戶端”,你要在www.baidu.com這臺(tái)服務(wù)器上打印$_SERVER['HTTP_REFERER']才會(huì)得到你作為客戶端偽造的referer
css這東西想深入學(xué)習(xí)不像一些js框架可以循序漸進(jìn),雖然上手容易,但是后期會(huì)發(fā)現(xiàn)學(xué)習(xí)曲線簡(jiǎn)直上天,而且知識(shí)特別雜,特別亂,所以還是多積累就好了,一般踩的坑多了,也就知道的多了。
見:
https://en.wikipedia.org/wiki...
應(yīng)有盡有.
呃,這個(gè)應(yīng)該是你用了友好提示插件的問(wèn)題,不用在意,已最終編譯結(jié)果為準(zhǔn),或者把那插件換成別的,也許要身就有bug
*{
padding: 0;
left: 0;
}
body{
padding-top: 50px;
}
.header{
position: fixed;
top: 0;
left: 0;
width: 100%;
height: 50px;
line-height: 50px;
text-align: center;
background-color: red;
z-index: 10001;
}
.layout{
display: flex;
position: relative;
}
.layout .layout-left{
flex: 0 0 200px;
flex-direction:column;
width: 200px;
color: #fff;
background-color: blue;
}
.layout .layout-right {
background-color: yellow;
overflow-y: auto;
overflow-x: hidden;
position: absolute;
left:215px;
top: 0;
bottom: 0;
right: 0;
margin: auto;
}el-upload 加個(gè) ref="xx",隨后 this.$refs.xx.clearFiles()
你這個(gè)是因?yàn)閏ss沒有安裝成功吧
我這里還是可以的,你看一下是否是裝了什么沖突的插件。
可以先Alt加鼠標(biāo)左鍵選中多個(gè)光標(biāo),然后shift加右鍵擴(kuò)大選擇范圍實(shí)現(xiàn)一樣的效果。
你是要這個(gè)嗎?
方法一:
(function() {
'use strict';
var $ = $ || window.$;
//.....
})();
方法2:
jQuery.noConflict();
(function($){
//.....
})(jQuery);axios.interceptors.request.use(config => {
return new Promise(resolve => {
// 調(diào)用ios方法 填充公共參數(shù)
window.__nativeFn("js_getAllDeviceInfo", {
// ios的響應(yīng)結(jié)果
response: r => {
config.data = Object.assign(config.data, r.data)
resolve(config)
}
})
})
}, error => {
return Promise.reject(error);
});!布爾操作符中的邏輯非,邏輯非會(huì)把它的操作數(shù)先轉(zhuǎn)換為一個(gè)布爾值(有一定的轉(zhuǎn)換規(guī)則,可以查閱相關(guān)資料),然后對(duì)這個(gè)布爾值取反。
let a = true;
console.log(!a);//false
let b = '';
console.log(!b);//true
let c = 123;
console.log(!c);//false
除了邏輯非!之外,還有邏輯與&,邏輯或|
error:function(data){
console.log(data); // 打印這個(gè)錯(cuò)誤信息看看
}
引用:答案來(lái)源 https://segmentfault.com/q/10...
借鑒:https://www.cnblogs.com/telne...
剛踩過(guò)但我不是前輩,樓上那種單一掛載是不行的,需要在鏡像構(gòu)建時(shí)將jenkins用戶加入到docker組里
ARG dockerGid=999
RUN echo "docker:x:${dockerGid}:jenkins" >> /etc/group
我弄了個(gè)可以用jenkins用戶運(yùn)行docker的鏡像,
直接拉取就可以用:
docker pull tomsun28/jenkins:1.1
運(yùn)行:
docker run -d -p 8080:8080 -p 50000:50000 --name jenkins --restart=always \
-v /opt/dockerWorkspace/jenkins_home:/var/jenkins_home \
-v $(which docker):/usr/bin/docker \
-v /var/run/docker.sock:/var/run/docker.sock tomsun28/jenkins:1.1
+ - 除了 加 和 減 ,還有 正 和 負(fù) 的意思,所以第一個(gè) 1 后邊的第一個(gè) + 是運(yùn)算符,剩下的識(shí)別成 正負(fù) 符號(hào),這樣就能解釋通了 你要是把那一串 + - 換成 * / ++ -- 之類的,就報(bào)錯(cuò)了
北大青鳥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)開發(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ū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(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)師。