在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/ HTML問(wèn)答
離觴 回答

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è)接口就行了!

解夏 回答
  1. 貼出代碼,不然答者全靠猜;
  2. 拿 css 審查一下,對(duì)比官網(wǎng)的看哪里沒有加寬度.
情皺 回答
只要找到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)邏輯:

  1. 設(shè)置兩個(gè)變量,一個(gè)用來(lái)保存AttachedToWindow被調(diào)用時(shí)的時(shí)間戳,一個(gè)用來(lái)保存顯示的總時(shí)長(zhǎng)
  2. DetachedFromWindow被調(diào)用時(shí),計(jì)算與AttachedToWindow的時(shí)間戳差值,并將AttachedToWindow的時(shí)間戳清零,然后總時(shí)長(zhǎng)加上這個(gè)差值
  3. AttachedToWindow后,DetachedFromWindow未被調(diào)用前,只需獲取當(dāng)前系統(tǒng)時(shí)間戳,然后計(jì)算與AttachedToWindow的時(shí)間戳差值,再加上總時(shí)長(zhǎng),就是總時(shí)長(zhǎng)
誮惜顏 回答

現(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í)特別雜,特別亂,所以還是多積累就好了,一般踩的坑多了,也就知道的多了。

孤影 回答

呃,這個(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

具體流程和構(gòu)建的Dockerfile看這里哦 tomsun28
github

孤影 回答

+ - 除了 ,還有 負(fù) 的意思,所以第一個(gè) 1 后邊的第一個(gè) + 是運(yùn)算符,剩下的識(shí)別成 正負(fù) 符號(hào),這樣就能解釋通了 你要是把那一串 + - 換成 * / ++ -- 之類的,就報(bào)錯(cuò)了