亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

服務(wù)端預(yù)渲染之Nuxt(使用篇)

 更新時間:2019年04月08日 09:08:21   作者:Aaron-攻城獅  
這篇文章主要介紹了服務(wù)端預(yù)渲染之Nuxt(使用篇),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

現(xiàn)在大多數(shù)開發(fā)都是基于 Vue 或者 React 開發(fā)的,能夠達(dá)到快速開發(fā)的效果,也有一些不足的地方, Nuxt 能夠在服務(wù)端做出渲染,然后讓搜索引擎在爬取數(shù)據(jù)的時候能夠讀到當(dāng)前頁面。

首先要說明一點(diǎn),我們可以認(rèn)為我們所編寫的 Vue 項目是一個服務(wù)端的項目,雖然編寫的還是 Vue 項目,但是 Nuxt 是基于服務(wù)器環(huán)境的。

就簡單的說一下 Nuxt 使用?;A(chǔ)只是還是以官方文檔為主,如果博客中哪里有問題,歡迎留言指正。

說了這么多,進(jìn)入正題。

路由

與傳統(tǒng)的 Vue 項目不同的是,我們在使用 Vue 的時候需要配置 Vue-Router 信息,在 Nuxt 有很關(guān)鍵的一點(diǎn)就是 約定優(yōu)于配置 。 page 目錄下的所有 *.vue 文件會自動生成路由配置。

在項目初始化之后,在 pages 下面默認(rèn)有一個 index.vue 文件,所以當(dāng)我們使用 npm run dev 啟動項目,并且使用 http://localhost:3000/ 訪問的時候能夠正常訪問路由。

為了證實(shí)上面這一點(diǎn),在 pages 下面創(chuàng)建一個信息 about.vue 文件,并且 http://localhost:3000/about 去訪問剛剛寫的頁面。我們可以按照正常的 Vue 頁面去開發(fā)就好了。

page目錄

├─page
│ ├─index.vue
└───└─about.vue

about.vue

<template>
 <div>
  <h2>This About</h2>
 </div>
</template>

創(chuàng)建完成之后使用 http://localhost:3000/about 訪問該頁面,頁面能夠正常的渲染出來了。就會看到 This About 顯示在頁面中。

做到這一步之后就應(yīng)該實(shí)現(xiàn)路由之間的跳轉(zhuǎn)了。 Vue 開發(fā)過程中,都是使用 router-link 標(biāo)簽完成路由之間的跳轉(zhuǎn),在 Nuxt 也同樣可以使用 router-link ,但是 Nuxt 仍然推薦使用 nuxt-link , nuxt-link 與 router-link 的功能是等效的。

可能會有一些疑問,既然是等效的,為什么要使用 nuxt-link 呢?官方文檔中是這樣說的:將來我們會為 nuxt-link 組件增加更多的功能特性,例如資源預(yù)加載,用于提升 nuxt.js 應(yīng)用的響應(yīng)速度。顯然嘛,官方不會無緣無故的就做出這么一個東西來,肯定實(shí)在其中做了很多的優(yōu)化工作的。

稍微的改動一下剛才的 about.vue 在里面添加兩個標(biāo)簽,一個使用 nuxt-link ,一個使用 router-link 看下能否正常完成跳轉(zhuǎn)。

about.vue - 更改后

<template>
 <div>
  <h2>This About</h2>
  <nuxt-link to="/">首頁</nuxt-link>
  <router-link to="/">首頁</router-link>
 </div>
</template>

既然從路由開始那么就不得不說到子路由,全局路由守衛(wèi)這些都些在路由中經(jīng)常用到的應(yīng)該怎么處理?該怎么解決這些問題。

前面既然說到了 Nuxt 會把 pages 文件夾下面的所有 *.vue 文件編譯成路由,那么子路由需要使用文件夾嵌套才行。

接下來就嘗試一下。首先要更改一下 pgeas 目錄結(jié)構(gòu)。

page目錄

├─page
│ ├─about
│ │ ├─detail.vue
│ │ └─index.vue
└───└─index.vue

注意上面的 about 目錄,是 index.vue 而并非 about.vue ,這里的 index.vue 指的是 about 路由下的首頁,也就是最開始放在與 index.vue 同級的那個 about.vue 是一樣的效果。

about/index.vue

<template>
 <div>
  <h2>This About</h2>
  <nuxt-link to="/">首頁</nuxt-link>
  <router-link to="/">首頁</router-link>
 </div>
</template>
about/detail.vue
<template>
 <div>
 <h2>This Detail</h2>
 </div>
</template>

現(xiàn)在如果我們想要訪問剛才的那兩個路由地址分別就是 http://localhost:3000/about 和 http://localhost:3000/about/detail 就能看到剛才編寫的 page 頁面了。

如果想要看路由生成到底是什么樣子的?可以在根目錄下有一個 .nuxt 文件夾,在里面可以看到一個 router.js ,這個文件夾下面就是 Nuex 生成好的路由信息。

打開文件后翻到最后會有一段這樣的代碼,是不是很眼熟?這是不就是在編寫 Vue 項目的時候配置的哪些路由文件么?

router.js

export function createRouter() {
 return new Router({
 mode: 'history',
 base: decodeURI('/'),
 linkActiveClass: 'nuxt-link-active',
 linkExactActiveClass: 'nuxt-link-exact-active',
 scrollBehavior,
 routes: [{
  path: "/about",
  component: _9ceb4424,
  name: "about"
 }, {
  path: "/about/detail",
  component: _18146f65,
  name: "about-detail"
 }, {
  path: "/",
  component: _d3bf5a4e,
  name: "index"
 }],
 fallback: false
 })
}

有了這個文件的話我們就可以清楚的知道,路由的結(jié)構(gòu)了。不僅僅這樣,還可以使用 name 去實(shí)現(xiàn)路由的跳轉(zhuǎn)了。

需要注意的是,如果你的路由是有文件夾嵌套的話, Nuxt 是用使用 - 來拼接路由的 name 名稱的(如: about-detail ),但是文件夾內(nèi)部的 index.vue 會直接已文件夾的名字作為 name 。一旦知道了路由的 name ,這樣我們就可以使用命令的方式跳轉(zhuǎn)路由了。

再次更改一下 about/index.vue 。

about/index.vue

<template>
 <div>
  <h2>This About</h2>
  <nuxt-link :to="{name:'about-detail'}">詳情</nuxt-link>
  <router-link :to="{name:'index'}">首頁</router-link>
  <button @click="onClick">跳轉(zhuǎn)到詳情</button>
 </div>
</template>
<script>
export default {
 methods: {
 onClick() {
  this.$router.push({name:"about-detail"})
 }
 }
}
</script>

使用路由訪問 http://localhost:3000/about 地址,分別點(diǎn)擊詳情、首頁與 button ,都是能夠正常跳轉(zhuǎn)的,與之前的 Vue 開發(fā)是完全沒有任何區(qū)別的。在 vue-router 中有一個很重要的一個點(diǎn)就是 動態(tài)路由 的概念,如果想要實(shí)現(xiàn)動態(tài)路由應(yīng)該怎么處理呢?

如果想要在 Nuxt 中使用動態(tài)路由的話,需要在對應(yīng)的路由下面添加一個 _參數(shù)名.vue 的文件,在 about 文件下面添加一個 _id.vue

page目錄

├─page
│ ├─about
│ │ ├─detail.vue
│ │ ├─_id.vue
│ │ └─index.vue
└───└─index.vue

新建完成之后在去 router.js 中看一下更改后的路由結(jié)構(gòu)

export function createRouter() {
 return new Router({
 mode: 'history',
 base: decodeURI('/'),
 linkActiveClass: 'nuxt-link-active',
 linkExactActiveClass: 'nuxt-link-exact-active',
 scrollBehavior,
 routes: [{
  path: "/about",
  component: _9ceb4424,
  name: "about"
 }, {
  path: "/about/detail",
  component: _18146f65,
  name: "about-detail"
 }, {
  path: "/about/:id",
  component: _6b59f854,
  name: "about-id"
 }, {
  path: "/",
  component: _d3bf5a4e,
  name: "index"
 }],
 fallback: false
 })
}

可以明顯的看到在 /about/:id 這個路由,明顯的變化不止這些變動的還有 name: "about-id" 不再是之前的 name:about 了。如果想要使用這個 id 的話必須在 _id.vue 中才能獲取到。

**_id.vue**

<template>
 <div>
 {{$route.params.name}}
 {{$route.params.id}}
 </div>
</template>

在 _id.vue 中編寫以上代碼并使用 http://localhost:3000/about/ABC ,可以看到在頁面中已經(jīng)展示了當(dāng)前的 id 值。

在實(shí)際開發(fā)過程當(dāng)中可能 params 可能會有多個參數(shù),又應(yīng)該怎么處理呢?

調(diào)整目錄結(jié)構(gòu)

// id為可選參數(shù)
├─page
│ ├─about
│ │ ├─_name
| | | └─_id
| | |  └─index.vue
│ │ └─index.vue
└───└─index.vue

**about - _name - _id.vue**

<template>
 <div>
 {{$route.params.name}}
 {{$route.params.id}}
 </div>
</template>

弄完之后看下 router.js 的變化

export function createRouter() {
 return new Router({
 mode: 'history',
 base: decodeURI('/'),
 linkActiveClass: 'nuxt-link-active',
 linkExactActiveClass: 'nuxt-link-exact-active',
 scrollBehavior,
 routes: [{
  path: "/about",
  component: _9ceb4424,
  name: "about"
 }, {
  path: "/about/detail",
  component: _18146f65,
  name: "about-detail"
 }, {
  path: "/about/:name",
  component: _2ec9f53c,
  name: "about-name"
 }, {
  path: "/about/:name/:id",
  component: _318c16a4,
  name: "about-name-id"
 }, {
  path: "/",
  component: _d3bf5a4e,
  name: "index"
 }],
 fallback: false
 })
}

這里展示的是第二種情況, id 為必選參數(shù)的情況,路由被編譯的結(jié)果。

雖然路由已經(jīng)添加了參數(shù),但是 id 屬性不是必填屬性,這樣的話不能滿足項目需求又要如何處理呢?很簡單的,在 _id.vue 文件同目錄下添加一個 index.vue 文件就可以了。

// id為必選參數(shù)
├─page
│ ├─about
│ │ ├─_name
| | | ├─_id.vue
| | | └─index.vue
│ │ └─index.vue
└───└─index.vue

需要注意的是,一定要在 _id.vue 文件中使用傳入的參數(shù),直接獲取在 index.vue 中是拿不到任何信息的。但是如果訪問 http://localhost:3000/about/ABC 這樣的路由的話,實(shí)在 index.vue 中是可以獲取到 name 參數(shù)的。

在剛才的 router.js 文件中生成的所有的路由都是平級的,如何實(shí)現(xiàn)路由的嵌套,如果想要實(shí)現(xiàn)嵌套路由的話,必須有和當(dāng)前路由同名的文件夾存在,才能完成路由的嵌套。

page目錄

├─page
│ ├─about
| | ├─_id.vue
| | └─detaile.vue
│ ├─about.vue
└───└─index.vue

router.js

export function createRouter() {
 return new Router({
 mode: 'history',
 base: decodeURI('/'),
 linkActiveClass: 'nuxt-link-active',
 linkExactActiveClass: 'nuxt-link-exact-active',
 scrollBehavior,
 routes: [{
  path: "/about",
  component: _76687814,
  children: [{
  path: "",
  component: _9ceb4424,
  name: "about"
  }, {
  path: ":id",
  component: _6b59f854,
  name: "about-id"
  }]
 }, {
  path: "/",
  component: _d3bf5a4e,
  name: "index"
 }],
 fallback: false
 })
}

更改完目錄結(jié)構(gòu),那我們嵌套的路由應(yīng)該如何展示?在 vue.js 中開發(fā)的時候使用 router-view 這個標(biāo)簽完成的。為了性能的優(yōu)化 Nuxt 也提供了一個對應(yīng)的標(biāo)簽 nuxt-child 。

如果想實(shí)現(xiàn)嵌套路由傳參需要稍微的改動一下目錄結(jié)構(gòu),按照上面的方法實(shí)現(xiàn)就好了,下面是一個路由結(jié)構(gòu)的例子。

page目錄

├─page
│ ├─about
│ │ ├─detail
| | | ├─_id.vue
| | | └─index.vue
│ │ └─index.vue
└───└─index.vue

router.js

export function createRouter() {
 return new Router({
 mode: 'history',
 base: decodeURI('/'),
 linkActiveClass: 'nuxt-link-active',
 linkExactActiveClass: 'nuxt-link-exact-active',
 scrollBehavior,
 routes: [{
  path: "/about",
  component: _76687814,
  name: "about",
  children: [{
  path: "detail",
  component: _0a09b97d,
  name: "about-detail"
  }, {
  path: "detail/:id?",
  component: _fa7c11b6,
  name: "about-detail-id"
  }]
 }, {
  path: "/",
  component: _d3bf5a4e,
  name: "index"
 }],
 fallback: false
 })
}

在 _id.vue 中則可以使用id這個參數(shù)了。訪問路由 http://localhost:3000/about/detail/123 ,依然可以拿到傳入的 id 為 123 的這個參數(shù)。

說了這么多了,還有很多問題沒得說完,關(guān)于路由的全局守衛(wèi)又應(yīng)該如何去使用?在 Nuxt 根目錄下有個 plugins 文件夾。首先要做的是在里面創(chuàng)建一個名為 router.js 文件。

plugins-router.js

export default ({app}) => {
 app.router.beforeEach((to,form,next) => {
 console.log(to)
 next();
 });
}

導(dǎo)出了一個函數(shù),在這個函數(shù)中可以通過結(jié)構(gòu)拿到 vue 的實(shí)例對象名叫 app 。需要注意的是,這個 beforeEach 函數(shù)的執(zhí)行,有可能會在服務(wù)端也會有可能在客戶端輸出??蛻舳耸状卧L問的頁面會在服務(wù)端做輸出,一旦渲染完成之后,則不會再在服務(wù)端輸出,則會一直在客戶端進(jìn)行輸出了。

說到這里做個小插曲,那么又該怎么區(qū)分當(dāng)前是在客戶端環(huán)境還是服務(wù)端環(huán)境呢?可以使用 process.server 獲取到當(dāng)前的運(yùn)行環(huán)境,其得到的是 Boolean 值, true 服務(wù)端, fasle 客戶端。

做了這些之后去訪問路由,仿佛沒有任何輸出,無論實(shí)在客戶端還是在服務(wù)端,都沒有任何打印輸出,中間缺少了步驟,需要在根目錄下找到 nuxt.config.js 對插件進(jìn)行配置。

nuxt.config.js

const pkg = require('./package')
module.exports = {
 plugins: [
 '@/plugins/element-ui',
 '@/plugins/router'
 ]
}

由于更改了 Nuxt 配置需要重啟一下服務(wù),才能正常執(zhí)行剛剛寫入的插件。然后訪問剛剛寫入的路由,會看在服務(wù)端初次渲染的時候,會輸出我們想要的那些東西,進(jìn)行路由跳轉(zhuǎn)的話,會在客戶端輸出,這也就證明了 Nuxt 只會做首屏的服務(wù)器渲染。

路由說了這么接下來需要說一下 Nuxt 是如何為指定的路由配置數(shù)據(jù)做渲染的。其實(shí) Nuxt 在做渲染的時候包裹了很多層。首先有一個 Document 作為其模板,然后再去尋找其布局的頁面,找到對應(yīng)的頁面之后,再根據(jù)引用去找到相關(guān)的組件進(jìn)行渲染,數(shù)據(jù)請求與數(shù)據(jù)掛載,一系列完成之后,把剩余的路由信息返還給客戶端,渲染完成,這個就是 Nuxt 簡單的渲染流程。

在上面提到了一個 布局頁面 ,這個東西應(yīng)該去哪里找?又應(yīng)該怎么做呢?它對于項目而言對于開發(fā)又有什么好處?在 Nuxt 根目錄下有一個 layouts 文件夾,下面有一個 default.vue 這個文件就是上面提到的渲染頁面,也就同等于 vue 開發(fā)中的 App.vue ,在這里可以做很多事情。例如添加一個全局的導(dǎo)航。

在 layouts 文件夾添加一個 about.vue 文件寫入如下內(nèi)容,接下來需要在 pages 下面的 about.vue 中通知,對應(yīng) pages 使用哪個布局頁面,不寫則使用默認(rèn),然后訪問 http://localhost:3000/about 相關(guān)的頁面,只要是和 about 相關(guān)的頁面,都會展示這個內(nèi)容。

layouts - about.vue

<template>
 <div>
 <h2>Aaron 個人博客主頁</h2>
 <nuxt></nuxt>
 </div>
</template>

pages - about.vue

<template>
 <div>
  <h2>About</h2>
  <nuxt-child></nuxt-child>
 </div>
</template>
<script>
export default {
 layout:"about"
}
</script>

訪問一下所有與 about 頁面有關(guān)的頁面,都會看到 Aaron個人博客主頁 這個字樣,若訪問根路由則無法看到的。

如果做過 mvc 開發(fā)的話,如果頁面發(fā)生錯誤會跳轉(zhuǎn)到一個錯誤頁面的。 Nuxt 也是有默認(rèn)的錯誤頁面的,但是全是英文而且樣式也不太好看,不能自定義樣式。如何自定義錯誤頁面呢?

在 layouts 文件夾中新建一個 error.vue 文件。

layouts - error.vue

<template>
 <div>
  <h1>這里是錯誤頁面</h1>
  <h2 v-if="error.statusCode == 404">404 - 頁面不存在</h2>
  <h2 v-else>500 - 服務(wù)器錯誤</h2>
  <ul>
    <li><nuxt-link to="/">HOME</nuxt-link></li>
  </ul>
 </div>
</template>

<script>
export default {
 props:["error"]
}
</script>

在 error.vue 中可以通過 props 拿到一個 error 對象,獲取到 error 錯誤信息之后能做任何想要做的事情。需要注意的一點(diǎn)是,自定意的錯誤頁面,只能在客戶端訪問失效的時候才會響應(yīng)到該頁面,若在服務(wù)端的話,是無法直接渲染這個頁面的。

更改頁面配置 Nuxt 中有些全局的配置,配置信息在 nuxt.config.js 更改其全局配置, pages 文件夾中的 *.vue 文件也是可以配置的,頁面私有的配置會覆蓋掉全局的配置。

舉例:

export default {
 layout:"about",
 head: {
  title:"About"
 }
}

在這些全局配置中最重要的一個就是 asyncData 這個屬性。 asyncData 到底是用來做什么的呢?這個數(shù)據(jù)可以在設(shè)置組件的數(shù)據(jù)之前能一步獲取或者處理數(shù)據(jù)。也就是說在組件渲染之前先獲取到數(shù)據(jù),然后等待掛載渲染。

舉個例子:

<template>
 <div>
   <h2>姓名:{{userInfo.name}}</h2>
   <h2>年齡:{{userInfo.age}}</h2>
   <nuxt-child></nuxt-child>
 </div>
</template>
<script>
let getUserInfo = () => {
 return new Promise(resolve => {
  setTimeout(() => {
   let data = {"name":"Aaron","age":18};
   resolve(data);
  })
 })
}
export default {
 layout:"about",
 head: {
  title:"About"
 },
 async asyncData(){
  const userInfo = await getUserInfo();
  return {userInfo}
 }
}
</script>

一定要 return 出去獲取到的對象,這樣就可以在組件中使用,這里返回的數(shù)據(jù)會和組件中的 data 合并。這個函數(shù)不光在服務(wù)端會執(zhí)行,在客戶端同樣也會執(zhí)行。

注意事項:

1.asyncData 方法會在組件(限于頁面組件)每次加載之前被調(diào)用
2.asyncData 可以在服務(wù)端或路由更新之前被調(diào)用
3.第一個參數(shù)被設(shè)定為當(dāng)前頁面的上下文對象
4.Nuxt會將 asyncData 返回的數(shù)據(jù)融合到組件的data方法返回的數(shù)據(jù)一并返回給組件使用
5.對于 asyncData 方式實(shí)在組件初始化前被調(diào)用的,所以在方法內(nèi)飾沒辦法通過this來引用組件的實(shí)例對象

剛剛提到了一點(diǎn)就是上下問對象,在上線文對象中可以獲取到很多東西,如路由參數(shù),錯誤信息等等等,這里就不作太多贅述了,有了這些可以做一些頁面的重定向或者其他工作,比如參數(shù)校驗(yàn),安全驗(yàn)證等工作。

路由扯了一大堆,接下來說一下如何在 Nuxt 中融入 axios 的使用。

安裝 axios

npm install @nuxtjs/axios --save-dev

安裝完成后更改配置信息:

nuxt.config.js

module.exports = {
  modules: [
    // Doc: https://axios.nuxtjs.org/usage
    '@nuxtjs/axios',
  ],
  axios: {
    proxy:true // 代理
  },
  proxy: {
    "/api/":"http://localhost:3001/"  // key(路由前綴):value(代理地址)
  }
}

主要說名一下 proxy 這里, /api/ 在請求的時候遇到此前綴則會只指向的代理地址去請求數(shù)據(jù)。

既然說到了 axios ,就不得不提到的一個東西就是攔截器,很是有用在項目開發(fā)過程中必不可少的。

舉個例子:

module.expores{
  plugins: [
    '@/pluginx/axios'
  ]
}
plugins/axios.js
export default ({$axios,request}) => {
  $axios. onRequest((config) => {
    config.headers.token = "Aaron"
  })
}

總結(jié)

說了這么多也許會有些紕漏,或者遺漏的知識點(diǎn),若有什么錯誤的地方可以留言,盡快做出改正。謝謝大家花費(fèi)這么長時間閱讀這篇文章。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • javaScript中的空值和假值

    javaScript中的空值和假值

    JavaScript 是世界上最流行的編程語言。javaScript中有五種空值和假值,分別為false,null,undefined,“”,0。從廣義上來說,這五個值都是對應(yīng)數(shù)據(jù)類型的無效值或空值
    2017-12-12
  • 實(shí)現(xiàn)點(diǎn)擊列表彈出列表索引的兩種方式

    實(shí)現(xiàn)點(diǎn)擊列表彈出列表索引的兩種方式

    使用利用事件冒泡委托給列表的父節(jié)點(diǎn)去處理的方式第二種方式就是使用閉包了,感興趣的你可以參考下本文,或許對你學(xué)習(xí)js有所幫助
    2013-03-03
  • 讓mayfish支持mysqli數(shù)據(jù)庫驅(qū)動的實(shí)現(xiàn)方法

    讓mayfish支持mysqli數(shù)據(jù)庫驅(qū)動的實(shí)現(xiàn)方法

    mysql 是非持繼連接函數(shù)而 mysqli 是永遠(yuǎn)連接函數(shù)。也就是說 mysql 每次鏈接都會打開一個連接的進(jìn)程而 mysqli 多次運(yùn)行 mysqli 將使用同一連接進(jìn)程,從而減少了服務(wù)器的開銷。
    2010-05-05
  • 詳解Javascript中DOM的范圍

    詳解Javascript中DOM的范圍

    “DOM2級遍歷和范圍”模塊定義了“范圍”接口。通過范圍可以選擇文檔中的一個區(qū)域,而不必考慮節(jié)點(diǎn)的界限(選擇在后臺完成,對用戶是不可見的)。下面這篇文章主要介紹了Javascript中DOM范圍的相關(guān)資料,需要的朋友可以參考下。
    2017-02-02
  • 網(wǎng)頁整體變灰白色(兼容各瀏覽器)實(shí)例

    網(wǎng)頁整體變灰白色(兼容各瀏覽器)實(shí)例

    網(wǎng)頁整體變灰白色(兼容各瀏覽器)實(shí)例,需要的朋友可以參考一下
    2013-04-04
  • Ajax與服務(wù)器(JSON)通信實(shí)例代碼

    Ajax與服務(wù)器(JSON)通信實(shí)例代碼

    這篇文章主要介紹了Ajax與服務(wù)器(JSON)通信實(shí)例代碼的相關(guān)資料,并附實(shí)例代碼,幫助大家學(xué)習(xí)理解此部分知識,需要的朋友可以參考下
    2016-11-11
  • javaScript嗅探執(zhí)行神器-sniffer.js

    javaScript嗅探執(zhí)行神器-sniffer.js

    本文主要介紹了javaScript嗅探執(zhí)行神器-sniffer.js的相關(guān)知識。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • JavaScript用構(gòu)造函數(shù)如何獲取變量的類型名

    JavaScript用構(gòu)造函數(shù)如何獲取變量的類型名

    在JavaScript中,如何準(zhǔn)確獲取變量的類型名是一個經(jīng)常使用的問題。但是常常不能獲取到變量的精確名稱,或者必須使用jQuery 中的方法,這里通過 typeof ,jQuery.type 和 通過構(gòu)造函數(shù)來獲取變量類型這三種方法詳細(xì)介紹一遍。有需要的朋友們可以參考借鑒,下面來一起看看吧。
    2016-12-12
  • JavaScript實(shí)現(xiàn)寫入文件到本地的方法【基于FileSaver.js插件】

    JavaScript實(shí)現(xiàn)寫入文件到本地的方法【基于FileSaver.js插件】

    這篇文章主要介紹了JavaScript實(shí)現(xiàn)寫入文件到本地的方法,結(jié)合實(shí)例形式分析了基于FileSaver.js插件實(shí)現(xiàn)保存文件到本地的相關(guān)操作技巧,并附帶FileSaver.js插件完整源碼,需要的朋友可以參考下
    2018-03-03
  • Javascript驗(yàn)證用戶輸入URL地址是否為空及格式是否正確

    Javascript驗(yàn)證用戶輸入URL地址是否為空及格式是否正確

    這篇文章主要介紹了Javascript驗(yàn)證用戶輸入URL地址是否為空及格式是否正確,很實(shí)用,需要的朋友可以參考下
    2014-10-10

最新評論