鍍金池/ 問答/ HTML問答
奧特蛋 回答

WEB-INF中創(chuàng)建的文件不能直接從外部訪問到, 這是servlet api的標(biāo)準(zhǔn)里規(guī)定的, 所有web容器也都是按此實(shí)現(xiàn)的。
想用的話,可以通過代碼(如spring mvc)或在可以訪問到的jsp里用include標(biāo)簽來間接訪問。

靜態(tài)資源的保護(hù)區(qū)訪問

package com.example;

import javax.servlet.ServletConfig;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import org.apache.catalina.servlets.DefaultServlet;

public class StaticServlet extends DefaultServlet
{
   protected String pathPrefix = "/static";

   public void init(ServletConfig config) throws ServletException
   {
      super.init(config);

      if (config.getInitParameter("pathPrefix") != null)
      {
         pathPrefix = config.getInitParameter("pathPrefix");
      }
   }

   protected String getRelativePath(HttpServletRequest req)
   {
      return pathPrefix + super.getRelativePath(req);
   }
}


在應(yīng)用web.xml配置

   
    
<servlet>
    <servlet-name>StaticServlet</servlet-name>
    <servlet-class>com.example.StaticServlet</servlet-class>
    <init-param>
        <param-name>pathPrefix</param-name>
        <!--這里是你靜態(tài)資源的地址 -->
        <param-value>/WEB-INF/static</param-value>
    </init-param>       
</servlet>

<servlet-mapping>
    <servlet-name>StaticServlet</servlet-name>
    <url-pattern>/static/*</url-pattern>
</servlet-mapping>  



瞄小懶 回答

如果僅僅是import出去,把函數(shù)import出去在外面執(zhí)行,或者執(zhí)行函數(shù)把結(jié)果import出去都可以。
但是既然原來的代碼本身不支持import,那么可不可能還有其他模塊依賴,可不可能依賴什么全局變量,這些都要打個(gè)問號。

笑浮塵 回答

期間使用了ftp工具,不知道為什么,只要用ftp工具上傳項(xiàng)目中的代碼就會導(dǎo)致webstorm卡頓。

公眾號關(guān)聯(lián)小程序,推文編輯頁面多媒體小程序

心悲涼 回答

sb了,就是普通的引入方式就對了:import EXIF from 'exif-js';,把exif-js用分號括起來就沒事了

懷中人 回答

最終寫法。

    function fun(arry){
        for(let i in arry){
            let menu = arry[i];
            if(!menu['num']){
                menu['num'] = 1;
            }
            if(menu['children'].length && menu['children']){
                for(let j in menu['children']){
                    menu['children'][j]['num'] = arry[i]['num'] + 1;
                    fun(menu['children'])
                }
            }
        }
    }
朽鹿 回答

請問下,解決了么?我目前也是出了這個(gè)問題

陪妳哭 回答

lazy load 的標(biāo)簽一般這么寫<img src="" data-url="imgurl" />
它的的原理就是檢測圖片位置是否即將進(jìn)入視窗內(nèi)
即將進(jìn)入時(shí)用 JavaScript 把data-url 的鏈接搬到 src,這個(gè)時(shí)候?yàn)g覽器就會加載圖片

至于有的圖片可以從模糊到清晰,可以參考漸進(jìn)式 jpeg
https://cloudinary.com/blog/p...

悶騷型 回答

背景知識1. 涉及到let和var的作用域范圍

  1. let的作用域?yàn)閴K級,直觀的看就是 {}內(nèi),出了大括號這個(gè)變量就失效了。
  2. var的作用域?yàn)槎x這個(gè)變量的函數(shù)內(nèi),如果不在函數(shù)內(nèi),他就是全局的了。

背景知識2. setTimeout為異步執(zhí)行,當(dāng)同步代碼全部完成后,才會去執(zhí)行它,本例中for循環(huán)跑完后才會依次執(zhí)行各個(gè)setTimeout里的function。

過程推演:

  1. 兩個(gè)for循環(huán)各創(chuàng)建了4個(gè) setTimeout,他們中都被傳入了變量i,等待for循環(huán)結(jié)束后開始執(zhí)行。
  2. 基于背景知識1:var-for 傳入的4個(gè)i在for循環(huán)結(jié)束后,所有的i都在后續(xù)循環(huán)時(shí)被重新賦值,直至最后一次,賦值為4.
    let-for 傳入的4個(gè)i在{}內(nèi)互不影響,后序循環(huán)不會給前面一次的循環(huán)體內(nèi)的i重新賦值(因?yàn)槊看窝h(huán)都是獨(dú)立的{}作用域),故能正常輸出期望值
心上人 回答

判斷該方法或值在B中是否存在,會依照其原型鏈逐級查找的,并返回最接近的那個(gè)。

比如

  • A含有fn,B的原型指向A,B也有fn
    那么B.fn得到的是B的fn
  • A含有fn,B的原型指向A,B沒有fn
    那么B.fn實(shí)際得到的是A的fn
  • A沒有fn,但A的原型有,B的原型指向A,B沒有fn
    那么B.fn實(shí)際得到的是A的原型的fn
  • A以及原型沒有fn,B的原型指向A,B沒有fn
    那么,B.fn會一致追溯到null,并返回undefined

當(dāng)時(shí)面試的時(shí)候我還遇到這樣的題目,可以參考一下

逗婦惱 回答

<!DOCTYPE html>
<html>
<head>

<title>CSS內(nèi)部樣式</title>
<meta charset="utf-8">
<style type="text/css">
    h2{
        color: red;
        font-size: 30px;
    }
</style>

</head>
<body>

<h2>CSS內(nèi)部樣式</h2>
<h2>CSS內(nèi)部樣式</h2>    

</body>
</html>

笨尐豬 回答

獲取數(shù)組長度就是 this.chooseId.length 這個(gè)方法的,這個(gè)不要懷疑,而你 輸出this.chooseId.length 為0 是因?yàn)椋惬@取的時(shí)機(jī)不對,不信?你把 打印放在一個(gè) setTimeout 函數(shù)里。也就是說你還沒有給 this.chooseId 添加數(shù)據(jù)的時(shí)候就獲取長度了。

孤酒 回答

2018年6月6日回答:
樓上的方法,給定固定的vkey,之前也使用過,后來發(fā)現(xiàn)有效期好像只有一天,所以就重新尋求新的解決方案。
受到這個(gè)回答的啟發(fā):https://zhuanlan.zhihu.com/p/...
觀察網(wǎng)站上的請求,發(fā)現(xiàn)每首歌都有其自己的vkey,

clipboard.png

所以思路就是在封裝歌曲信息的時(shí)候,就給每首歌封裝相應(yīng)的vkey即可
singer-detail.vue

_normalizeSongs (list) {
  let ret = []
  list.forEach((item) => {
    let {musicData} = item
    getSongVkey(musicData.songmid).then((res) => {
      // console.log('這首歌的vkey獲取到了')
      const vkey = res.data.items[0].vkey
      if (musicData.songid && musicData.albummid) {
        ret.push(createSong(musicData, vkey))
      }
    })
  })
  return ret
}

singer.js

export function getSongVkey (songmid) { // 獲取歌曲的vkey
  const url = 'https://c.y.qq.com/base/fcgi-bin/fcg_music_express_mobile3.fcg'
  const data = Object.assign({}, {
    callback: 'musicJsonCallback',
    loginUin: 3051522991,
    format: 'jsonp',
    platform: 'yqq',
    needNewCode: 0,
    cid: 205361747,
    uin: 3051522991,
    guid: 5931742855,
    songmid: songmid,
    filename: `C400${songmid}.m4a`
  })

  return jsonp(url, data)
}

song.js

export function createSong (musicData, vkey) { // 格式化歌曲信息
  return new Song({
    id: musicData.songid,
    mid: musicData.songmid,
    singer: filterSinger(musicData.singer),
    name: musicData.songname,
    album: musicData.albumname,
    duration: musicData.interval,
    image: `https://y.gtimg.cn/music/photo_new/T002R300x300M000${musicData.albummid}.jpg?max_age=2592000`,
    url: `http://dl.stream.qqmusic.qq.com/C400${musicData.songmid}.m4a?fromtag=38&guid=5931742855&vkey=${vkey}`
  })
}

這是昨天想出的方法,今天使用仍然可以,后續(xù)會不會因?yàn)間uid再出現(xiàn)什么問題尚未可知。

孤酒 回答

node.js運(yùn)行Vue項(xiàng)目的npm依賴沒有裝好,可以先將node_modules刪掉,重新來一遍,如果按照了淘寶鏡像就用cnpm install,如果沒有就直接npm install,無誤的話再npm run dev來開始這個(gè)Vue項(xiàng)目

舊酒館 回答
{
    "compilerOptions": {
        "noImplicitAny": true,
        "target": "es5",
        "module": "commonjs",
        "outDir": "tsdist/",
        "sourceMap": true,
        "jsx": "react",
        "allowJs": true,
        "typeRoots": [
            "./node_modules/@types"
        ]
    },
    "include": [
        "tslib/**/*",
        "tssrc/**/*"
    ],
    "lib": [
      "es2016"
    ]
}
萌吟 回答

你第一種的方式parent.document這個(gè)是在父頁面進(jìn)行的操作。
而第二種則是在當(dāng)前頁面進(jìn)行的操作,肯定不一樣了。

脾氣硬 回答

外層和內(nèi)層是兩個(gè)作用域,每次變量訪問都是訪問最近的,如果沒有var n = i這一句話,就訪問到頂級作用域了,而此時(shí)i已經(jīng)到10了