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的作用域范圍
背景知識2. setTimeout為異步執(zhí)行,當(dāng)同步代碼全部完成后,才會去執(zhí)行它,本例中for循環(huán)跑完后才會依次執(zhí)行各個(gè)setTimeout里的function。
過程推演:
antd-mobile
material-ui
<!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,
所以思路就是在封裝歌曲信息的時(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)什么問題尚未可知。
參考pdf.js的實(shí)現(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"
]
}
base64?
你第一種的方式parent.document
這個(gè)是在父頁面進(jìn)行的操作。
而第二種則是在當(dāng)前頁面進(jìn)行的操作,肯定不一樣了。
北大青鳥APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國家
北大青鳥中博軟件學(xué)院創(chuàng)立于2003年,作為華東區(qū)著名互聯(lián)網(wǎng)學(xué)院和江蘇省首批服務(wù)外包人才培訓(xùn)基地,中博成功培育了近30000名軟件工程師走向高薪崗位,合作企業(yè)超4
中公教育集團(tuán)創(chuàng)建于1999年,經(jīng)過二十年潛心發(fā)展,已由一家北大畢業(yè)生自主創(chuàng)業(yè)的信息技術(shù)與教育服務(wù)機(jī)構(gòu),發(fā)展為教育服務(wù)業(yè)的綜合性企業(yè)集團(tuán),成為集合面授教學(xué)培訓(xùn)、網(wǎng)
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國一站式人才培養(yǎng)平臺、一站式人才輸送平臺。2014年4月3日在美國成功上市,融資1
曾工作于聯(lián)想擔(dān)任系統(tǒng)開發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jī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ù), 熟練的跨平臺面向?qū)ο箝_發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫,具有快速界面開發(fā)的能力,對瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁制作和網(wǎng)頁游戲開發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國Software AG 技術(shù)顧問,美國Dachieve 系統(tǒng)架構(gòu)師,美國AngelEngineers Inc. 系統(tǒng)架構(gòu)師。