<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    paulwong

    #

    20 個有用的 Angular.js 工具

    喜歡 Angular.js?我們?yōu)殚_發(fā)者編寫了一份最佳 angular.js 工具和資源清單,這可讓使用 angular 開發(fā)應(yīng)用程序變得高效。

    對于大多數(shù)想要設(shè)計動態(tài) web 應(yīng)用的開發(fā)者而言,Angular.js 成為了一個可以選擇的框架。angularjs 開發(fā)者如果想開始一個 AngularJS 工程,為了采取成熟的方式開發(fā)網(wǎng)頁,他們或許需要很多工具。

    在開始使用 angular.js 之前,Angular.js 新手或許也想讀一些優(yōu)秀的 angular.js 書籍。

    我們同樣也編寫了一份龐大的在線 angular.js 教程清單。

    為了減輕使用 AngularJS 開發(fā) web 應(yīng)用的負(fù)擔(dān),這里列出了幾個出色的工具,包括測試、前端開發(fā)、編輯、函數(shù)庫、擴展、模塊、代碼生成器、網(wǎng)格工具。

    shirleywong
    shirleywong
    翻譯于 1周前

    0人頂

     翻譯的不錯哦!

    Angular.js 開發(fā)最佳 IDE

    Angular.js 需要的大部分集成開發(fā)環(huán)境(IDE)和輕量級的編輯器列在了下面。

    Webstorm

    Webstorm是一個出色的代碼編輯器,它完全理解工程,可以為任何類型的網(wǎng)站提供高質(zhì)量的代碼。它支持所有最流行最新的網(wǎng)站開發(fā)技術(shù)。使用這個工具開發(fā)網(wǎng)站,可以很好地集成單點或流程。 

    Aptana

    Aptana 是一具集成開發(fā)環(huán)境,可以幫助你優(yōu)雅地創(chuàng)建網(wǎng)站應(yīng)用。使用它做為 AngularJS 的集成開發(fā)工具,你需要在 Eclipse 商店激活 AngularJS Eclipse 擴展。

    wancheng
    wancheng
    翻譯于 1周前

    0人頂

     翻譯的不錯哦!

    文本編輯器 Sublime

    對 AngularJS Web 開發(fā)者來說,方便的文本編輯工具是 Sublime。它幫助程序員使用快捷方式或幾個按鍵實現(xiàn)編碼。它具有很強的適應(yīng)性,可以定制任何類型的編程環(huán)境。它也可以按照你的意愿分塊編輯。它還可以輕松地在項目之間切換,所有的修改都將自動保存在各自的項目中。

    Angular.js 的專用測試工具

    測試是開發(fā)的重要組成部分,無論對于使用 Angular.js 還是任何其他軟件都是如此。下面的工具可以幫助你簡化采用 Angular.js 開發(fā)的應(yīng)用程序的測試。

    這些工具都是在線 JavaScript 測試工具的好伴侶。

    Protractor

    Protractor 是一個端到端的測試框架,貫穿于 AngularJS,是一個完全自動化的測試工具。它可以運行在真實的瀏覽器中測試你的應(yīng)用程序。它使用了 WebDriver,Mocha, jasmine, Node.js, selenium 和cucumber 等都使用的偉大的技術(shù)。

    當(dāng)所有的待處理網(wǎng)頁任務(wù)完成時,它會自動使用AngularJS的應(yīng)用進行通信。所以,你在測試時不需要使用等待或睡眠命令。

    Iam魔方
    Iam魔方
    翻譯于 1周前

    0人頂

     翻譯的不錯哦!

    Jasmine

    Jasmine 是一個行為驅(qū)動開發(fā)框架,專為 Javascript 用戶創(chuàng)建。它提供了基本的測試框架,并且可以持續(xù)維護。所有測試都可以使用一個 all-in-one 的包完成,這是 Jasmine 的主要特點,高效測試你的應(yīng)用。

    這個框架的一個缺點是它不能感知運行平臺(瀏覽器)。如果配合Karma使用這個問題很容易避免。

    Karma 可以做為測試運行者配合 Jasmine 使用。它是一個測試框架幫且你高效地測試應(yīng)用。 

    Code Orchestra

    它是一個絕對意義上的前端開發(fā)工具幫助你創(chuàng)建和測試網(wǎng)站應(yīng)用。你可以實時寫代碼,根據(jù)建議修改代碼,以同樣的格式保存代碼。通過這個工具修改后的代碼會自動布署到運行中的應(yīng)用。

    wancheng
    wancheng
    翻譯于 1周前

    0人頂

     翻譯的不錯哦!

    最好的 Angular.js 函數(shù)庫

    下面是一些有用的庫,它們可以增強 angular.js 框架的能力,對開發(fā)者有所幫助。沒有必要從頭構(gòu)建那些可能已經(jīng)成為開放源碼的函數(shù)庫。

    CodePen

    對于所有 HTML,CSS 和 JavaScript 的前端開發(fā)者,CodePen 是一款完美的編輯工具。這個工具可以最大限度地減少對網(wǎng)站的創(chuàng)建、測試和完善的繁瑣的網(wǎng)頁開發(fā)工作。它是一個協(xié)作的在線編程環(huán)境。

    Web 開發(fā)人員可以清晰地跨平臺實時查看。它有一個瀏覽器中的代碼編輯器,可以自動地迅速地上傳多個文件。這個功能可協(xié)助 Web 開發(fā)人員在幾秒的時間內(nèi)創(chuàng)建一個新的代碼。

    Angular Fire

    使用 Angular Fire,可以輕松地幫助你開發(fā) AngularJS 的應(yīng)用后臺。AngularJS 綁定的 Firebase 已經(jīng)正式被 Angular Fire 支持。Firebase 是一個基于云計算的平臺,可以很容易地集成實時應(yīng)用和快速創(chuàng)建后臺。

    當(dāng) Firebase 和 Angular Fire 組合在一起,它們有助于以更快的速度同步數(shù)據(jù)和提供良好的用戶管理服務(wù)。它還提供了一個三向的數(shù)據(jù)綁定、用戶身份驗證和靜態(tài)托管。

    Iam魔方
    Iam魔方
    翻譯于 7天前

    0人頂

     翻譯的不錯哦!

    AngularUI

    AngularJS 以高效率創(chuàng)建單頁面應(yīng)用而出名. 創(chuàng)建這些單頁面應(yīng)用時候,我們需要一個靈活的路由,這個優(yōu)秀的AngularJS框架是構(gòu)建一個全面的UI組件俗稱ui-router。 它能根據(jù)應(yīng)用程序的狀態(tài)提供一個簡單的導(dǎo)航和改變視圖,而不僅僅是基于URL。
    AngularUI還包含非常多的UI組件,這些組件是使用原生指令像ui—maps,ui-calendar,ui-Bootstrap創(chuàng)建的。這些UI組件和指令可以更快建設(shè)Angular網(wǎng)站

    UI Bootstrap

    UI Bootstrap是一個不同尋常的AngularUI組件,它能幫助你創(chuàng)建基于智能手機的web應(yīng)用程序,而且用戶體驗不錯。這個UI組件提供的AngularJS原生指令完全兼容Twitte Bootstrap

    成熟的毛毛蟲
    成熟的毛毛蟲
    翻譯于 5天前

    1人頂

     翻譯的不錯哦!

    Angular.js 有用的擴展和工具

    下面是一些 Angular.js 擴展,可以滿足一些特殊應(yīng)用之需。

    Ng-Inspector

    Ng-Inspector 是一個優(yōu)秀的瀏覽器插件,支持 Firefox,Chrome 和 Safari,復(fù)用它可以創(chuàng)建一個探測控制面板,方便開發(fā),調(diào)試 AngularJS 應(yīng)用,它提供了完整的輔助功能。

    使用它可以更方便的和你的應(yīng)用交互,還可以實時更新。它還可以看到全部范圍內(nèi)的層次結(jié)構(gòu),模型,類型和值。點擊你關(guān)注的一個范圍,它會高亮顯示相應(yīng)的 DOM 結(jié)點。

    AngularJS Batarang

    你可以使用 AngularJS Batarang 來調(diào)試你的 AngularJ S應(yīng)用,它是一個專為 Chrome 提供的插件。它幫助你改善應(yīng)用性能。還可能衡量調(diào)節(jié)性能的進度。

    wancheng
    wancheng
    翻譯于 4天前

    0人頂

     翻譯的不錯哦!

    Restangular

    AngularJS 獨有的一個服務(wù)是 Restangular,它可以幫助您輕松應(yīng)對各種要求,例如獲取、發(fā)送、刪除以及把數(shù)據(jù)存入數(shù)據(jù)庫。它對于所有從 RESTful API 中大規(guī)模存取數(shù)據(jù)的 AngularJS 應(yīng)用都很有必要。

    Generator Angular - 一個有用的工具

    Yeomen Generator

    你可以很容易地開始一個具有合理的默認(rèn)值和最好的用例的項目。建立這樣的 Angular 應(yīng)用,這款 Yeomen generator 工具是非常有用的。它只需幾條終端的命令,便加速了 AngularJS 應(yīng)用的開發(fā)過程。這個工具是非常有用的。這些專用的生成工具將有助于應(yīng)用了解項目的有關(guān)信息,并有助于開發(fā)和測試應(yīng)用程序。

    Iam魔方
    Iam魔方
    翻譯于 3天前

    0人頂

     翻譯的不錯哦!

    Angular Deckgrid

    Angular Deckgrid 可以為你提供響應(yīng)度和顏值俱高的應(yīng)用,可以適配不同的移動終端。輕量級類磚石結(jié)構(gòu)易于創(chuàng)建靈活的表格,高效創(chuàng)建圖片展示。 

    Radian

    Radian 是一個優(yōu)秀的框架,使用它只需要少量的設(shè)置就可以開啟 AngularJS 項目。在多人開發(fā)項目中它是一個理想的選擇。

    Lumx

    Lumx 以快速簡單的方式幫助你創(chuàng)建簡單而優(yōu)雅的應(yīng)用。 這個可響應(yīng)式前端框架是基于AngularJS 和Google 材料設(shè)計規(guī)范。這個工具可嵌入最新的技術(shù),如 Sass 預(yù)處理器,AngularJS 和 JQuery,能極大地提高 web 應(yīng)用的性能。

    wancheng
    wancheng
    翻譯于 1天前

    0人頂

     翻譯的不錯哦!

    Angular Gettext

    你可以用英語編碼,在編碼需要被翻譯的地方加上注解。Angular Gettext 工具就會自動翻譯那些獨立的部分。這是 AngularJS 非常簡單而強大的翻譯支持工具。

    NgDocs

    AngularJS 框架內(nèi)置 ngDocs 工具可以簡化你項目文檔和參考手冊的相關(guān)工作。這款基于 Android 的工具也能提供給所有新手一些容易跟進的教程。

    葉秀蘭
    葉秀蘭
    翻譯于 18小時前

    0人頂

     翻譯的不錯哦!

    NgTables

    無論是簡單還是復(fù)雜的 Web 應(yīng)用,在 AngularJS 框架中很容易創(chuàng)建一個表格,然后通過實用的 ngTables 工具進行高效的管理。ngTable 是 AngularJS 表格指令,支持排序,過濾和分頁,在編譯步驟中自動生成帶有標(biāo)題和過濾器的標(biāo)題行。

    ngTable 支持定制過濾選項,表格分組,表格外部數(shù)據(jù)控制 等等功能。

    總的來說,這些都是創(chuàng)建任意 AngularJS Web 應(yīng)用的,最有用的工具集合。用好這些工具可以幫助你輕松高效的創(chuàng)建 AngularJS 項目。

    posted @ 2015-08-12 13:32 paulwong 閱讀(606) | 評論 (0)編輯 收藏

    排版六原則

    作者: 阮一峰

    日期: 2010年10月16日

    上個月,我貼了《圖形化簡歷》

    幾天后,就收到了秋葉老師的來信,希望與我探討一些設(shè)計問題。他寫過一本暢銷書《說服力-讓你的PPT會說話》,眼下正在寫續(xù)集。

    我看了新書的樣章,覺得很不錯,有些內(nèi)容很值得分享。

    ====================================

    首先,我們先看一個例子。良好的設(shè)計如何使得一個平庸的文檔脫胎換骨。下面是一張大學(xué)生的求職簡歷,再普通不過了,想要引起招聘經(jīng)理的注意,恐怕很難。

    秋葉老師對它進行了簡單的排版,還是一張表格,還是黑白配色,沒有使用任何圖形元素,效果卻完全不一樣了。

    真是令人眼前一亮,不由自主地想多看幾眼。這就是優(yōu)秀設(shè)計的作用:它讓你脫穎而出。

    ====================================

    秋葉老師把他的排版心得,總結(jié)為六個原則:對齊,聚攏,重復(fù),對比,強調(diào),留白。我是這樣理解的:

    一、對齊原則

      相關(guān)內(nèi)容必須對齊,次級標(biāo)題必須縮進,方便讀者視線快速移動,一眼看到最重要的信息。

    二、聚攏原則

      將內(nèi)容分成幾個區(qū)域,相關(guān)內(nèi)容都聚在一個區(qū)域中。段間距應(yīng)該大于段內(nèi)的行距。

    三、留白原則

      千萬不要把頁面排得密密麻麻,要留出一定的空白,這本身就是對頁面的分隔。這樣既減少了頁面的壓迫感,又可以引導(dǎo)讀者視線,突出重點內(nèi)容。

    四、降噪原則

      顏色過多、字?jǐn)?shù)過多、圖形過繁,都是分散讀者注意力的"噪音"。

    五、重復(fù)原則

      多頁面排版時,注意各個頁面設(shè)計上的一致性和連貫性。另外,在內(nèi)容上,重要信息值得重復(fù)出現(xiàn)。

    六、對比原則

      加大不同元素的視覺差異。這樣既增加了頁面的活潑,又方便讀者集中注意力閱讀某一個子區(qū)域。

    ====================================

    下面用一個PPT的例子,演示排版六原則。

    上面這張ppt有兩個毛病。一是字?jǐn)?shù)太多,抓不住重點;二是右邊沒有對齊,使得讀者的視線只能一行行地從行首到行尾移動,不能直上直下。

    現(xiàn)在進行修改。

    第一步,根據(jù)"聚攏原則",將六點分成六個區(qū)域。

    第二步,根據(jù)"降噪原則",將每一點分成"小標(biāo)題"和"說明文字"兩部分。

    第三步,根據(jù)"對齊原則",將每一個部分、每一種元素對齊。

    第四步,根據(jù)"對比原則",加大"小標(biāo)題"和"說明文字"在字體和顏色上的差異。

    第五步,根據(jù)"留白原則",留出一定的空白。

    頁面的可讀性大大增加。

    (完)

    posted @ 2015-08-07 15:49 paulwong 閱讀(715) | 評論 (0)編輯 收藏

    關(guān)于顏色理論

    作者: 阮一峰

    日期: 2008年7月21日

    制作網(wǎng)頁的過程中,我一直不知道應(yīng)該如何配色。

    我的意思是,我不知道應(yīng)該選擇哪些顏色放在一起,完全憑感覺。于是昨天,我在網(wǎng)上找了一些資料,希望找到理論指導(dǎo)。

    結(jié)果很失望。顏色理論研究的都是顏色的本質(zhì),至于顏色搭配,最終靠的還是個人感覺。說到底,Choosing colors is art, not science。不過,我還是記錄一下吧,其中一些東西還是很有趣的。

    =================

    1. Color Wheel

    所謂Color Wheel,就是將一系列顏色,有次序地通過一個圓盤的形式,展現(xiàn)出來。

    它的產(chǎn)生方式是,首先列出三原色(PRIMARY COLORS):紅、黃、藍。

    Photobucket

    然后,二二混合,產(chǎn)生二級顏色(SECONDARY COLORS):綠、橙、紫。

    接著,繼續(xù)二二混合,又產(chǎn)生6種三級顏色(TERTIARY COLORS):黃橙、紅橙、紅紫、藍紫、黃綠、藍紫。

    通過不斷混合相鄰顏色,產(chǎn)生新的顏色,最終形成一個全域的Color Wheel。

    2. 類似色和互補色

    12色的Color Wheel上任意三個相鄰的顏色,被稱為類似色(analogous colors)。通常認(rèn)為,它們放在一起會很和諧。

    Color Wheel對角線上的兩種顏色,被稱為互補色(complementary colors)。通常認(rèn)為,它們放在一起,會形成對比效果。

    此外,如果要尋找三種互相平衡的顏色,可以選擇12色的Color Wheel上任意三個三角對立的顏色(Triad)。

    如果要尋找三種顏色,其中二種互相類似,另一種與它們形成對比,則可以選取互補色兩側(cè)相鄰的顏色。(split-complementary colors

    3. 顏色模型

    常用的顏色模型有三種,分別是RGB、CMYK、HSV模型。

    4. RGB模型

    RGB是Red、Green和Blue的縮寫,任意顏色都可以由紅、綠、藍這三種顏色不同比例混合后產(chǎn)生。這個模型主要用于電子顯示屏的顏色顯示。

    RGB模型通常用三個十六進制數(shù)來表示顏色,F(xiàn)FFFFF代表100%的紅色、100%的綠色和100%藍色混合,產(chǎn)生白色;000000代表0%的紅色、0%的綠色和0%藍色混合,產(chǎn)生黑色。

    5. HSV模型

    H指的是Hue(色調(diào)),它是"顏色"的同義詞。

    S指的是Saturation(飽和度),它指的是顏色的純度,即顏色中含有灰色(gray)的程度。飽和度越高,顏色越純;飽和度越低,顏色中灰色成分越大。任何顏色,飽和度變成最小值時,都會變成灰色。

    V指的是Value,即顏色中白色的成分。這個值越大,顏色就越白越亮,這個值最小,顏色就越黑越暗。最大值時,所有顏色都變成白色,最小值時,所有顏色都變成黑色。

    HSV模型是通過調(diào)節(jié)這三個值來標(biāo)識顏色。它通常是一個color wheel的形式,所有邊緣的顏色都是飽和度最高的顏色,越向圓心飽和度越小。Hue通過角度值選取,另有一個亮度軸,來選取Value值。

    6.CMYK模型

    這個模型主要用于印刷業(yè),就是指用cyan, magenta, yellow, black這四種顏料混合,產(chǎn)生其他各種顏色。

    印刷品上的圖案,仔細(xì)看其實都是由一個個小點構(gòu)成,而每個小點又都是采用四色套印,重合疊加后產(chǎn)生各種顏色的效果。

    (完)

    posted @ 2015-08-07 15:47 paulwong 閱讀(630) | 評論 (0)編輯 收藏

    RESTful API 設(shè)計指南

    作者: 阮一峰

    日期: 2014年5月22日

    網(wǎng)絡(luò)應(yīng)用程序,分為前端和后端兩個部分。當(dāng)前的發(fā)展趨勢,就是前端設(shè)備層出不窮(手機、平板、桌面電腦、其他專用設(shè)備......)。

    因此,必須有一種統(tǒng)一的機制,方便不同的前端設(shè)備與后端進行通信。這導(dǎo)致API構(gòu)架的流行,甚至出現(xiàn)"API First"的設(shè)計思想。RESTful API是目前比較成熟的一套互聯(lián)網(wǎng)應(yīng)用程序的API設(shè)計理論。我以前寫過一篇《理解RESTful架構(gòu)》,探討如何理解這個概念。

    今天,我將介紹RESTful API的設(shè)計細(xì)節(jié),探討如何設(shè)計一套合理、好用的API。我的主要參考了兩篇文章(12)。

    RESTful API

    一、協(xié)議

    API與用戶的通信協(xié)議,總是使用HTTPs協(xié)議

    二、域名

    應(yīng)該盡量將API部署在專用域名之下。

     https://api.example.com 

    如果確定API很簡單,不會有進一步擴展,可以考慮放在主域名下。

     https://example.org/api/ 

    三、版本(Versioning)

    應(yīng)該將API的版本號放入URL。

     https://api.example.com/v1/ 

    另一種做法是,將版本號放在HTTP頭信息中,但不如放入URL方便和直觀。Github采用這種做法。

    四、路徑(Endpoint)

    路徑又稱"終點"(endpoint),表示API的具體網(wǎng)址。

    在RESTful架構(gòu)中,每個網(wǎng)址代表一種資源(resource),所以網(wǎng)址中不能有動詞,只能有名詞,而且所用的名詞往往與數(shù)據(jù)庫的表格名對應(yīng)。一般來說,數(shù)據(jù)庫中的表都是同種記錄的"集合"(collection),所以API中的名詞也應(yīng)該使用復(fù)數(shù)。

    舉例來說,有一個API提供動物園(zoo)的信息,還包括各種動物和雇員的信息,則它的路徑應(yīng)該設(shè)計成下面這樣。

    • https://api.example.com/v1/zoos
    • https://api.example.com/v1/animals
    • https://api.example.com/v1/employees

    五、HTTP動詞

    對于資源的具體操作類型,由HTTP動詞表示。

    常用的HTTP動詞有下面五個(括號里是對應(yīng)的SQL命令)。

    • GET(SELECT):從服務(wù)器取出資源(一項或多項)。
    • POST(CREATE):在服務(wù)器新建一個資源。
    • PUT(UPDATE):在服務(wù)器更新資源(客戶端提供改變后的完整資源)。
    • PATCH(UPDATE):在服務(wù)器更新資源(客戶端提供改變的屬性)。
    • DELETE(DELETE):從服務(wù)器刪除資源。

    還有兩個不常用的HTTP動詞。

    • HEAD:獲取資源的元數(shù)據(jù)。
    • OPTIONS:獲取信息,關(guān)于資源的哪些屬性是客戶端可以改變的。

    下面是一些例子。

    • GET /zoos:列出所有動物園
    • POST /zoos:新建一個動物園
    • GET /zoos/ID:獲取某個指定動物園的信息
    • PUT /zoos/ID:更新某個指定動物園的信息(提供該動物園的全部信息)
    • PATCH /zoos/ID:更新某個指定動物園的信息(提供該動物園的部分信息)
    • DELETE /zoos/ID:刪除某個動物園
    • GET /zoos/ID/animals:列出某個指定動物園的所有動物
    • DELETE /zoos/ID/animals/ID:刪除某個指定動物園的指定動物

    六、過濾信息(Filtering)

    如果記錄數(shù)量很多,服務(wù)器不可能都將它們返回給用戶。API應(yīng)該提供參數(shù),過濾返回結(jié)果。

    下面是一些常見的參數(shù)。

    • ?limit=10:指定返回記錄的數(shù)量
    • ?offset=10:指定返回記錄的開始位置。
    • ?page=2&per_page=100:指定第幾頁,以及每頁的記錄數(shù)。
    • ?sortby=name&order=asc:指定返回結(jié)果按照哪個屬性排序,以及排序順序。
    • ?animal_type_id=1:指定篩選條件

    參數(shù)的設(shè)計允許存在冗余,即允許API路徑和URL參數(shù)偶爾有重復(fù)。比如,GET /zoo/ID/animals 與 GET /animals?zoo_id=ID 的含義是相同的。

    七、狀態(tài)碼(Status Codes)

    服務(wù)器向用戶返回的狀態(tài)碼和提示信息,常見的有以下一些(方括號中是該狀態(tài)碼對應(yīng)的HTTP動詞)。

    • 200 OK - [GET]:服務(wù)器成功返回用戶請求的數(shù)據(jù),該操作是冪等的(Idempotent)。
    • 201 CREATED - [POST/PUT/PATCH]:用戶新建或修改數(shù)據(jù)成功。
    • 202 Accepted - [*]:表示一個請求已經(jīng)進入后臺排隊(異步任務(wù))
    • 204 NO CONTENT - [DELETE]:用戶刪除數(shù)據(jù)成功。
    • 400 INVALID REQUEST - [POST/PUT/PATCH]:用戶發(fā)出的請求有錯誤,服務(wù)器沒有進行新建或修改數(shù)據(jù)的操作,該操作是冪等的。
    • 401 Unauthorized - [*]:表示用戶沒有權(quán)限(令牌、用戶名、密碼錯誤)。
    • 403 Forbidden - [*] 表示用戶得到授權(quán)(與401錯誤相對),但是訪問是被禁止的。
    • 404 NOT FOUND - [*]:用戶發(fā)出的請求針對的是不存在的記錄,服務(wù)器沒有進行操作,該操作是冪等的。
    • 406 Not Acceptable - [GET]:用戶請求的格式不可得(比如用戶請求JSON格式,但是只有XML格式)。
    • 410 Gone -[GET]:用戶請求的資源被永久刪除,且不會再得到的。
    • 422 Unprocesable entity - [POST/PUT/PATCH] 當(dāng)創(chuàng)建一個對象時,發(fā)生一個驗證錯誤。
    • 500 INTERNAL SERVER ERROR - [*]:服務(wù)器發(fā)生錯誤,用戶將無法判斷發(fā)出的請求是否成功。

    狀態(tài)碼的完全列表參見這里

    八、錯誤處理(Error handling)

    如果狀態(tài)碼是4xx,就應(yīng)該向用戶返回出錯信息。一般來說,返回的信息中將error作為鍵名,出錯信息作為鍵值即可。

     {     error: "Invalid API key" } 

    九、返回結(jié)果

    針對不同操作,服務(wù)器向用戶返回的結(jié)果應(yīng)該符合以下規(guī)范。

    • GET /collection:返回資源對象的列表(數(shù)組)
    • GET /collection/resource:返回單個資源對象
    • POST /collection:返回新生成的資源對象
    • PUT /collection/resource:返回完整的資源對象
    • PATCH /collection/resource:返回完整的資源對象
    • DELETE /collection/resource:返回一個空文檔

    十、Hypermedia API

    RESTful API最好做到Hypermedia,即返回結(jié)果中提供鏈接,連向其他API方法,使得用戶不查文檔,也知道下一步應(yīng)該做什么。

    比如,當(dāng)用戶向api.example.com的根目錄發(fā)出請求,會得到這樣一個文檔。

     {"link": {   "rel":   "collection https://www.example.com/zoos",   "href":  "https://api.example.com/zoos",   "title": "List of zoos",   "type":  "application/vnd.yourformat+json" }} 

    上面代碼表示,文檔中有一個link屬性,用戶讀取這個屬性就知道下一步該調(diào)用什么API了。rel表示這個API與當(dāng)前網(wǎng)址的關(guān)系(collection關(guān)系,并給出該collection的網(wǎng)址),href表示API的路徑,title表示API的標(biāo)題,type表示返回類型。

    Hypermedia API的設(shè)計被稱為HATEOAS。Github的API就是這種設(shè)計,訪問api.github.com會得到一個所有可用API的網(wǎng)址列表。

     {   "current_user_url": "https://api.github.com/user",   "authorizations_url": "https://api.github.com/authorizations",   // ... } 

    從上面可以看到,如果想獲取當(dāng)前用戶的信息,應(yīng)該去訪問api.github.com/user,然后就得到了下面結(jié)果。

     {   "message": "Requires authentication",   "documentation_url": "https://developer.github.com/v3" } 

    上面代碼表示,服務(wù)器給出了提示信息,以及文檔的網(wǎng)址。

    十一、其他

    (1)API的身份認(rèn)證應(yīng)該使用OAuth 2.0框架。

    (2)服務(wù)器返回的數(shù)據(jù)格式,應(yīng)該盡量使用JSON,避免使用XML。

    (完)

    posted @ 2015-08-07 14:13 paulwong 閱讀(763) | 評論 (0)編輯 收藏

    理解OAuth 2.0

    https://www.ruanyifeng.com/blog/2019/04/oauth-grant-types.html

    https://aaronparecki.com/oauth-2-simplified

    posted @ 2015-08-07 14:12 paulwong 閱讀(512) | 評論 (0)編輯 收藏

    XMLHttpRequest Level 2 使用指南

    作者: 阮一峰

    日期: 2012年9月 8日

    XMLHttpRequest是一個瀏覽器接口,使得Javascript可以進行HTTP(S)通信。

    最早,微軟在IE 5引進了這個接口。因為它太有用,其他瀏覽器也模仿部署了,ajax操作因此得以誕生。

    但是,這個接口一直沒有標(biāo)準(zhǔn)化,每家瀏覽器的實現(xiàn)或多或少有點不同。HTML 5的概念形成后,W3C開始考慮標(biāo)準(zhǔn)化這個接口。2008年2月,就提出了XMLHttpRequest Level 2 草案。

    這個XMLHttpRequest的新版本,提出了很多有用的新功能,將大大推動互聯(lián)網(wǎng)革新。本文就對這個新版本進行詳細(xì)介紹。

    一、老版本的XMLHttpRequest對象

    在介紹新版本之前,我們先回顧一下老版本的用法。

    首先,新建一個XMLHttpRequest的實例。

      var xhr = new XMLHttpRequest();

    然后,向遠(yuǎn)程主機發(fā)出一個HTTP請求。

      xhr.open('GET', 'example.php');

      xhr.send();

    接著,就等待遠(yuǎn)程主機做出回應(yīng)。這時需要監(jiān)控XMLHttpRequest對象的狀態(tài)變化,指定回調(diào)函數(shù)。

      xhr.onreadystatechange = function(){

        if ( xhr.readyState == 4 && xhr.status == 200 ) {

          alert( xhr.responseText );

        } else {

          alert( xhr.statusText );

        }

      };

    上面的代碼包含了老版本XMLHttpRequest對象的主要屬性:

      * xhr.readyState:XMLHttpRequest對象的狀態(tài),等于4表示數(shù)據(jù)已經(jīng)接收完畢。

      * xhr.status:服務(wù)器返回的狀態(tài)碼,等于200表示一切正常。

      * xhr.responseText:服務(wù)器返回的文本數(shù)據(jù)

      * xhr.responseXML:服務(wù)器返回的XML格式的數(shù)據(jù)

      * xhr.statusText:服務(wù)器返回的狀態(tài)文本。

    二、老版本的缺點

    老版本的XMLHttpRequest對象有以下幾個缺點:

      * 只支持文本數(shù)據(jù)的傳送,無法用來讀取和上傳二進制文件。

      * 傳送和接收數(shù)據(jù)時,沒有進度信息,只能提示有沒有完成。

      * 受到"同域限制"(Same Origin Policy),只能向同一域名的服務(wù)器請求數(shù)據(jù)。

    三、新版本的功能

    新版本的XMLHttpRequest對象,針對老版本的缺點,做出了大幅改進。

      * 可以設(shè)置HTTP請求的時限。

      * 可以使用FormData對象管理表單數(shù)據(jù)。

      * 可以上傳文件。

      * 可以請求不同域名下的數(shù)據(jù)(跨域請求)。

      * 可以獲取服務(wù)器端的二進制數(shù)據(jù)。

      * 可以獲得數(shù)據(jù)傳輸?shù)倪M度信息。

    下面,我就一一介紹這些新功能。

    四、HTTP請求的時限

    有時,ajax操作很耗時,而且無法預(yù)知要花多少時間。如果網(wǎng)速很慢,用戶可能要等很久。

    新版本的XMLHttpRequest對象,增加了timeout屬性,可以設(shè)置HTTP請求的時限。

      xhr.timeout = 3000;

    上面的語句,將最長等待時間設(shè)為3000毫秒。過了這個時限,就自動停止HTTP請求。與之配套的還有一個timeout事件,用來指定回調(diào)函數(shù)。

      xhr.ontimeout = function(event){

        alert('請求超時!');

      }

    目前,Opera、Firefox和IE 10支持該屬性,IE 8和IE 9的這個屬性屬于XDomainRequest對象,而Chrome和Safari還不支持。

    五、FormData對象

    ajax操作往往用來傳遞表單數(shù)據(jù)。為了方便表單處理,HTML 5新增了一個FormData對象,可以模擬表單。

    首先,新建一個FormData對象。

      var formData = new FormData();

    然后,為它添加表單項。

      formData.append('username', '張三');

      formData.append('id', 123456);

    最后,直接傳送這個FormData對象。這與提交網(wǎng)頁表單的效果,完全一樣。

      xhr.send(formData);

    FormData對象也可以用來獲取網(wǎng)頁表單的值。

      var form = document.getElementById('myform');

      var formData = new FormData(form);

      formData.append('secret', '123456'); // 添加一個表單項

      xhr.open('POST', form.action);

      xhr.send(formData);

    六、上傳文件

    新版XMLHttpRequest對象,不僅可以發(fā)送文本信息,還可以上傳文件。

    假定files是一個"選擇文件"的表單元素(input[type="file"]),我們將它裝入FormData對象。

      var formData = new FormData();

      for (var i = 0; i < files.length;i++) {

        formData.append('files[]', files[i]);

      }

    然后,發(fā)送這個FormData對象。

      xhr.send(formData);

    七、跨域資源共享(CORS)

    新版本的XMLHttpRequest對象,可以向不同域名的服務(wù)器發(fā)出HTTP請求。這叫做"跨域資源共享"(Cross-origin resource sharing,簡稱CORS)。

    使用"跨域資源共享"的前提,是瀏覽器必須支持這個功能,而且服務(wù)器端必須同意這種"跨域"。如果能夠滿足上面的條件,則代碼的寫法與不跨域的請求完全一樣。

      xhr.open('GET', 'http://other.server/and/path/to/script');

    目前,除了IE 8和IE 9,主流瀏覽器都支持CORS,IE 10也將支持這個功能。服務(wù)器端的設(shè)置,請參考《Server-Side Access Control》

    八、接收二進制數(shù)據(jù)(方法A:改寫MIMEType)

    老版本的XMLHttpRequest對象,只能從服務(wù)器取回文本數(shù)據(jù)(否則它的名字就不用XML起首了),新版則可以取回二進制數(shù)據(jù)。

    這里又分成兩種做法。較老的做法是改寫數(shù)據(jù)的MIMEType,將服務(wù)器返回的二進制數(shù)據(jù)偽裝成文本數(shù)據(jù),并且告訴瀏覽器這是用戶自定義的字符集。

      xhr.overrideMimeType("text/plain; charset=x-user-defined");

    然后,用responseText屬性接收服務(wù)器返回的二進制數(shù)據(jù)。

      var binStr = xhr.responseText;

    由于這時,瀏覽器把它當(dāng)做文本數(shù)據(jù),所以還必須再一個個字節(jié)地還原成二進制數(shù)據(jù)。

      for (var i = 0, len = binStr.length; i < len; ++i) {

        var c = binStr.charCodeAt(i);

        var byte = c & 0xff;

      }

    最后一行的位運算"c & 0xff",表示在每個字符的兩個字節(jié)之中,只保留后一個字節(jié),將前一個字節(jié)扔掉。原因是瀏覽器解讀字符的時候,會把字符自動解讀成Unicode的0xF700-0xF7ff區(qū)段。

    八、接收二進制數(shù)據(jù)(方法B:responseType屬性)

    從服務(wù)器取回二進制數(shù)據(jù),較新的方法是使用新增的responseType屬性。如果服務(wù)器返回文本數(shù)據(jù),這個屬性的值是"TEXT",這是默認(rèn)值。較新的瀏覽器還支持其他值,也就是說,可以接收其他格式的數(shù)據(jù)。

    你可以把responseType設(shè)為blob,表示服務(wù)器傳回的是二進制對象。

      var xhr = new XMLHttpRequest();

      xhr.open('GET', '/path/to/image.png');

      xhr.responseType = 'blob';

    接收數(shù)據(jù)的時候,用瀏覽器自帶的Blob對象即可。

      var blob = new Blob([xhr.response], {type: 'image/png'});

    注意,是讀取xhr.response,而不是xhr.responseText。

    你還可以將responseType設(shè)為arraybuffer,把二進制數(shù)據(jù)裝在一個數(shù)組里。

      var xhr = new XMLHttpRequest();

      xhr.open('GET', '/path/to/image.png');

      xhr.responseType = "arraybuffer";

    接收數(shù)據(jù)的時候,需要遍歷這個數(shù)組。

      var arrayBuffer = xhr.response;

      if (arrayBuffer) {

        var byteArray = new Uint8Array(arrayBuffer);

        for (var i = 0; i < byteArray.byteLength; i++) {

          // do something

        }
      }

    更詳細(xì)的討論,請看Sending and Receiving Binary Data

    九、進度信息

    新版本的XMLHttpRequest對象,傳送數(shù)據(jù)的時候,有一個progress事件,用來返回進度信息。

    它分成上傳和下載兩種情況。下載的progress事件屬于XMLHttpRequest對象,上傳的progress事件屬于XMLHttpRequest.upload對象。

    我們先定義progress事件的回調(diào)函數(shù)。

      xhr.onprogress = updateProgress;

      xhr.upload.onprogress = updateProgress;

    然后,在回調(diào)函數(shù)里面,使用這個事件的一些屬性。

      function updateProgress(event) {

        if (event.lengthComputable) {

          var percentComplete = event.loaded / event.total;

        }

      }

    上面的代碼中,event.total是需要傳輸?shù)目傋止?jié),event.loaded是已經(jīng)傳輸?shù)淖止?jié)。如果event.lengthComputable不為真,則event.total等于0。

    與progress事件相關(guān)的,還有其他五個事件,可以分別指定回調(diào)函數(shù):

      * load事件:傳輸成功完成。

      * abort事件:傳輸被用戶取消。

      * error事件:傳輸中出現(xiàn)錯誤。

      * loadstart事件:傳輸開始。

      * loadEnd事件:傳輸結(jié)束,但是不知道成功還是失敗。

    十、閱讀材料

      1. Introduction to XMLHttpRequest Level 2: 新功能的綜合介紹。

      2. New Tricks in XMLHttpRequest 2:一些用法的介紹。

      3. Using XMLHttpRequest:一些高級用法,主要針對Firefox瀏覽器。

      4. HTTP Access Control:CORS綜述。

      5. DOM access control using cross-origin resource sharing:CORS的9種HTTP頭信息

      6. Server-Side Access Control:服務(wù)器端CORS設(shè)置。

      7. Enable CORS:服務(wù)端CORS設(shè)置。

    (完)

    posted @ 2015-08-07 12:24 paulwong 閱讀(488) | 評論 (0)編輯 收藏

    理解DOMString、Document、FormData、Blob、File、ArrayBuffer數(shù)據(jù)類型

         摘要: 一、XMLHttpRequest 2.0的家臣們我大學(xué)那會兒,一個稱為Ajax的東西對前端行業(yè)造成了深遠(yuǎn)影響,不僅是JS語言,而包括前端地位、職位興起以及工作分工等。拋開IE6瀏覽器不談,其他瀏覽器的Ajax實際上都是借助XMLHttpRequest實現(xiàn)的。然后,好多年過去了,XMLHttpRequest帶著兩位家臣,DOMString和Document數(shù)據(jù)類型攻城略地,幾乎一統(tǒng)天下。然時代是發(fā)展...  閱讀全文

    posted @ 2015-08-07 12:08 paulwong 閱讀(818) | 評論 (0)編輯 收藏

    AJAX下載+監(jiān)控進度+保存文件

    全程用AJAX下載文件,并顯示下載進度,之后保存文件。

    HTML5文件:

    <!DOCTYPE html>
    <html>
    <head>
        <title>XMLHttpRequest Download Progress</title>
    </head>
    <body>
        <progress id="p"></progress>
        <input type="button" onclick="downloadAndSave();" value="Download"/>
        <script>
            
    function downloadAndSave()
            {
                
    var progressBar = document.getElementById('p'), xhr = new XMLHttpRequest();
                xhr.open('GET', '
    2');
                xhr.responseType 
    = "arraybuffer";
                xhr.onprogress 
    = function(event) {
                    
    if(event.lengthComputable) {
                        progressBar.max 
    = event.total;
                        progressBar.value 
    = event.loaded;
                    }
                };
                xhr.onloadend 
    = function(event) {
                    progressBar.value 
    = event.loaded;
                    saveByeToFile('
    2', xhr.response);
                };
                xhr.send();
            }
            
            
    function saveByeToFile(name, arrayBuffer) {
                
    var byteArray = new Uint8Array(arrayBuffer);
                
    var a = window.document.createElement('a');

                a.href 
    = window.URL.createObjectURL(new Blob([ byteArray ], {
                    type : 'application
    /octet-stream'
                }));
                a.download 
    = name;

                
    // Append anchor to body.
                document.body.appendChild(a)
                a.click();

                
    // Remove anchor from body
                document.body.removeChild(a)
            }
        
    </script>
    </body>
    <html>

    posted @ 2015-08-06 19:17 paulwong 閱讀(1140) | 評論 (0)編輯 收藏

    SONY PS4的用戶登錄機制

    1. 如果你買了PS4,要玩數(shù)字版的游戲,就必須要新建一個帳號,綁定信用卡,購買游戲,下載游戲,玩耍。

    2. 如果你有多于一臺的PS4,則可用之前的帳號登錄,下載已購買的游戲,玩耍,但又要在第三臺PS4上登錄,則不被允許。

    3. 如果剛剛那臺PS4上有多于一個帳號,則可授權(quán)給其他用戶玩已購買的游戲,只需做“登錄為常用的PS4”即可,但這個授權(quán)只能授權(quán)一臺。

    4. 一個帳號,同一時間只能在二臺PS4上玩游戲。且這兩臺PS4只能一臺用別人的帳號玩自己購買的游戲,另一臺只能用自己的帳號玩自己的游戲。

    5. 如果在網(wǎng)頁上解綁了帳號與PS4的關(guān)系,那這個帳號又可以在另一個PS4上登錄,并授權(quán)給別的用戶下載、玩自己的游戲,但這種網(wǎng)頁解綁只能半年做一次。原先的已經(jīng)綁定的PS4上的別的用戶只要不去用你的帳號登錄,則SONY不會檢查此帳號的授權(quán)有效性,即你可以繼續(xù)玩。

    6. 這樣就變成有一個假授權(quán)PS4、一個真授權(quán)PS4和一個只能用自己帳號的的PS4。

    PS4游戲怎么買省錢?小編講解合購游戲
    http://www.pcpop.com/doc/1/1011/1011606.shtml

    某寶上信譽好的店買PS4合購游戲到底安全嗎?
    http://www.zhihu.com/question/23386383

    posted @ 2015-07-20 21:07 paulwong 閱讀(1021) | 評論 (0)編輯 收藏

    員工激勵

    員工激勵機制

    俗話說 “水不激不揚,人不激不奮” 是我國古代典型的激勵思想。中國古代在激勵方面有頗多論述和實踐,我認(rèn)為中國儒家思想博大精深,但不太好操作。

    什么是激勵?

    激勵過程可以看作是外部刺激、個體內(nèi)部條件、行為表現(xiàn)和行為結(jié)果的共同作用過程。 激勵是一個動態(tài)變化循環(huán)的過程:獎勵目標(biāo)→努力→績效→獎勵→滿意→努力,這其中還有個人完成目標(biāo)的能力,獲得獎勵的期望值,覺察到的公平,消耗力量、能力等一系列因素。只有綜合考慮到各個方面,才能取得滿意的激勵效果。

    為什么要激勵?

    我們將“付出”,“回報”放在一架天枰上:

    • 當(dāng)天枰兩側(cè)相等時,員工感到公平;
    • 當(dāng)天枰左側(cè)大于(〉)右側(cè)時,員工感到占了便宜,行為有: ——員工產(chǎn)生歉疚感,從而更努力工作。 ——員工心安理得。

    • 當(dāng)天枰左側(cè)小于(〈)右側(cè)時,員工感到吃了虧,行為有: ——員工爭取更多的獎酬、待遇。 ——員工減少自己投入努力,如遲到早退、怠工、出廢品、浪費原料、放棄責(zé)任。 ——員工想方設(shè)法把參照者的獎酬待遇拉下來。 ——員工想要參照者工作干得更多。 ——參照者心理上調(diào)節(jié)對這些變量的認(rèn)識(類似于用阿Q精神),使之平衡。 ——改變參照對象,求得“比上不足、比下有余”的自慰效果。 ——在企業(yè)沒法達到公平感覺時,員工辭職,另謀高就。

    公平感覺純粹是主觀、心理上的反應(yīng)。在現(xiàn)實中,人們常常高估自己的投入貢獻,低估別人的投入貢獻,從而造成觀察問題的系統(tǒng)偏差。

    何時激勵員工

    員工激勵是無時無刻的,伴隨整個職業(yè)生涯,而非需要的時候激勵一把。

    在哪激勵員工

    同樣員工激勵可以是任何時間任何地點。

    誰來激勵員工

    很多企業(yè)認(rèn)為激勵員工是人力資源的工作,人力資源部門職能確實包此項工作,但人力資源部門實施起來也有很多不足的地方。 首先人力資源部門并不熟悉每個部門的工作細(xì)節(jié),如果各部門或小組能夠內(nèi)部激勵員工效果遠(yuǎn)遠(yuǎn)好于由人力資源部門主導(dǎo)的相關(guān)工作。

    激勵的誤區(qū)

    畫餅方法,很多企業(yè)采用這種方法,這種激勵在當(dāng)下已經(jīng)失去了作用或收效甚微。先不說畫餅是否能兌現(xiàn),畫餅法設(shè)置的目標(biāo)太遙遠(yuǎn),而到達目標(biāo)途中每步細(xì)節(jié)是缺失的。

    最常見的例子就是大會上老板說“大家好好干,達到業(yè)績,年底發(fā)獎金”,會議結(jié)束老板回到自己的辦公室,員工回到自己的位置上該干什么干什么。 因為公司的業(yè)績就像股市一樣不可預(yù)測,這個年終獎就像買彩票或是場賭博,且風(fēng)險很大,員工都默認(rèn)放棄,順其自然,能拿到獎金也好,拿不到也沒有什么付出。

    當(dāng)員工得到獎勵,可能熱情狀態(tài)能保持幾天,幾周,一兩個月,這種熱情狀態(tài)不可能持續(xù)保持,在這個期間員工的工作狀態(tài)是有顯著提升的。高潮過去隨后熱情就會消退,慢慢回到正常的工作狀態(tài)。 所以激勵是持續(xù)的,漸進的,激勵密度也很有講究,“密”與“”都會影響激勵的效果。

    怎樣激勵員工

    從上面的天枰法則我們可以看到,激勵就是不停地調(diào)整法碼。有哪些激勵方法呢:

    1. 表率激勵
    2. 榮譽激勵
    3. 獎懲激勵
    4. 目標(biāo)激勵
    5. 物質(zhì)激勵
    6. 情感激勵
    7. 公平激勵
    8. 信任激勵
    9. 賞識激勵
    10. 尊重激勵
    11. 參與激勵
    12. 榮譽激勵
    13. 關(guān)心激勵
    14. 相互激勵
    15. 股票增值
    16. 股票期權(quán)
    17. 虛擬股票
    18. 員工持股

    激勵方式太多了,無法依依列舉,你可以參考相關(guān)管理學(xué)的書籍,近代管理學(xué)有很成熟激勵方法,以及很多成熟的案例參考。

    我想談的是“激勵圖”,這是我多年總結(jié)出來的圖表。供大家參考。 激勵圖

    從激勵圖中我們可以看到:

    1. 從不激勵的企業(yè),員工永遠(yuǎn)是常態(tài)工作,偶爾還會產(chǎn)生負(fù)面情緒。
    2. 如果激勵與下一次激勵間隔過長效果就不明顯
    3. 當(dāng)激勵后間隔太長或者停止激勵,員工在經(jīng)過一段常態(tài)的工作后,會出現(xiàn)負(fù)能量增長的情況
    4. 最不好的結(jié)果是一旦激勵完后直接進入消極階段
    5. 正能量常態(tài)的團隊,這種團隊最常見的就是直銷,保險行業(yè),激勵后的結(jié)果我們無法預(yù)知,已經(jīng)上升到精神層面。
    6. 讓激勵成為常態(tài),持續(xù)不斷激勵這是每個企業(yè)需要思考的一個問題。
    http://my.oschina.net/neochen/blog/479169

    posted @ 2015-07-20 10:02 paulwong 閱讀(441) | 評論 (0)編輯 收藏

    僅列出標(biāo)題
    共115頁: First 上一頁 34 35 36 37 38 39 40 41 42 下一頁 Last 
    主站蜘蛛池模板: 精品成在人线AV无码免费看 | 亚洲精品无码激情AV| 97se亚洲国产综合自在线| 久久九九AV免费精品| 中文字幕亚洲一区二区va在线| 亚洲av乱码一区二区三区按摩| 999久久久免费精品国产| 亚洲AV色香蕉一区二区| 国产三级在线免费观看| 免费人成视频在线观看不卡| 亚洲国产成人无码AV在线| 曰批全过程免费视频在线观看| 99人中文字幕亚洲区| 日本在线免费观看| 亚洲AV无码国产精品色午友在线| 亚洲视频在线观看免费| aaa毛片免费观看| 亚洲一区二区三区国产精品| 免费看黄网站在线看| 免费国产成人高清视频网站| 亚洲AV成人片无码网站| 巨胸喷奶水视频www网免费| www.亚洲成在线| 中文字幕av无码无卡免费| 亚洲av日韩av综合| 亚欧色视频在线观看免费| 亚洲综合激情另类小说区| 美丽的姑娘免费观看在线播放| 亚洲尹人九九大色香蕉网站| 香蕉成人免费看片视频app下载| 亚洲AV午夜成人片| 久久久久久一品道精品免费看| 亚洲AV成人精品网站在线播放| 日本免费高清视频| 亚洲av日韩av高潮潮喷无码| 嫩草在线视频www免费观看| 久久精品亚洲日本佐佐木明希| 无码专区AAAAAA免费视频| 亚洲尹人九九大色香蕉网站| 国产成人精品免费视频大全麻豆| 亚洲性无码av在线|