精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

初識項目

移動開發 Android
打開VS2015,創建Web項目,選擇ASP.NET Web Application,在彈出的窗口里選擇ASP.NET 5 Website模板創建項目,圖示如下:

打開VS2015,創建Web項目,選擇ASP.NET Web Application,在彈出的窗口里選擇ASP.NET 5 Website模板創建項目,圖示如下:

我們可以看到,此時Web Forms\MVC\Web API復選框都選擇不了,原有是因為在ASP.NET 5中做了大量更改,移除了Web Forms功能,將MVC、Web API、Web Pages這些功能合在了一起,所以自然就不需要這些復選框了。另外由于是CTP版,所以目前還沒有提供單元測試項目的創建。

新創建的項目在VS的解決方案目錄結構和實際文件夾的目錄結構分別如下:

注意:上圖是在VS 預覽版中的截圖,在新版的RC版本中,默認的客戶端構建工具變成了gulp(即配置文件是gulpfile.js),而非原來的grunt了。

兩個圖的差異非常大,我們來一一分析一下這些差異。
項目結構差異

通過圖示,我們可以看到,在根目錄中,不僅項目文件從從csproj變成了xproj,還少了很多之前的文件(如web.config),但也多了很多不同的文件以及文件夾,我們先列出這些不同的文件盒文件夾,再來一一講解這些內容。
文件/文件夾 功能描述
config.json 程序的配置文件,類似于web.config。
project.json 該項目的主要配置,主要是負責程序集、項目部署等方面。部分功能類似于之前的package.config。
package.json npm的配置文件,npm是基于Nodejs的包管理器。
bower.json Bower管理器的配置文件,Bower是專門用于管理前端項目的包管理器。
gulpfile.js 是gulp的配置文件,gulp是基于Nodejs的Javascript任務管理器,在ASP.NET5中主要是用于管理NPM和Bower中的內容。
Stratup.cs 程序啟動入口,類似于Global.asax。
Project_Readme.html 項目說明文件,沒啥用。
wwwroot 靜態資源文件(如css、圖片、js)的存放目錄。
Dependencies Bower和NPM的依賴管理包。
References 程序集引用,和以前的類似,但現在有了版本之分(如ASP.NET 5.0和ASP.NET Core 5.0)。
project.json

project.json是項目的核心配置文件,示例如下:

 

  1. "webroot""wwwroot"
  2. "version""1.0.0-*"
  3. "dependencies": { 
  4. "Microsoft.AspNet.Diagnostics""1.0.0-beta4"
  5. "Microsoft.AspNet.Mvc""6.0.0-beta4"
  6. "Microsoft.AspNet.Mvc.TagHelpers""6.0.0-beta4"
  7. "Microsoft.AspNet.Server.IIS""1.0.0-beta4"
  8. "Microsoft.AspNet.Server.WebListener""1.0.0-beta4"
  9. "Microsoft.AspNet.StaticFiles""1.0.0-beta4"
  10. "Microsoft.AspNet.Tooling.Razor""1.0.0-beta4"
  11. "Microsoft.Framework.ConfigurationModel.Json""1.0.0-beta4"
  12. "Microsoft.Framework.CodeGenerators.Mvc""1.0.0-beta4"
  13. "Microsoft.Framework.Logging""1.0.0-beta4"
  14. "Microsoft.Framework.Logging.Console""1.0.0-beta4"
  15. "Microsoft.VisualStudio.Web.BrowserLink.Loader""14.0.0-beta4"
  16. "Microsoft.Framework.ConfigurationModel.UserSecrets""1.0.0-beta4" 
  17. }, 
  18. "commands": { 
  19. "web""Microsoft.AspNet.Hosting --server Microsoft.AspNet.Server.WebListener --server.urls http://localhost:5000"
  20. "gen""Microsoft.Framework.CodeGeneration" 
  21. }, 
  22. "frameworks": { 
  23. "dnx451": { }, 
  24. "dnxcore50": { } 
  25. }, 
  26. "exclude": [ 
  27. "wwwroot"
  28. "node_modules"
  29. "bower_components" 
  30. ], 
  31. "publishExclude": [ 
  32. "node_modules"
  33. "bower_components"
  34. "**.xproj"
  35. "**.user"
  36. "**.vspscc" 
  37. ], 
  38. "scripts": { 
  39. "postrestore": [ "npm install""bower install" ], 
  40. "prepare": [ "gulp copy" ] 

由于該文件的詳細參數非常多,具體詳細內容請參考http://go.microsoft.com/fwlink/?LinkID=517074 ,在這里我們主要講解如下3個類型的內容。
webroot

webroot是指定該web項目的靜態文件存放地址,目前是用于在發布的時候講該目錄中的內部發布的正確的位置(詳細內容可以在部署發布章節中找到)。注意BookStore解決方案中帶有地球圖標的wwwroot目錄是真實的文件夾路徑,我們可以對其進行修改,比如將其修改為wwwroot1,那么相應的webroot的值也應該修改為wwwroot1,因為gulpfile.js里代碼要通過project.webroot來使用該目錄,以便能夠將bower管理的前端庫都復制到正確的目錄。
程序集管理

在解決方案的References節點點,我們看到有兩個分類,分別是:DNX 4.5.1和DNX Core 5.0,其中DNX Core 5.0就是我們所說的云優化版(即可以在其它操作系統下部署的跨平臺版),而DNX 4.5.1則是和之前版本一樣的全功能版,這兩個版本的程序集是通過dependencies節點進行管理的。

在一級dependencies節點,主要是定義該項目的通用程序集引用以及版本,而不同的版本的程序集則在framworks下的各版本下的dependencies節點進行維護,比如:

 

  1. "frameworks": { 
  2. "dnx451": { 
  3. "dependencies": {"log4net""2.0.3"/* 只在全功能版中引入log4net程序集*/ 
  4.  
  5. }, 
  6. "dnxcore50": { } 

 

上述兩種類型的程序集在維護的時候,都有智能提示(包括程序集名稱以及版本號),在當定義完自己要用的程序集并保持之后,系統會自動從Nuget上下載所需要的程序集,你也可以通過右鍵References選擇Restore Packages來更新所有的程序集引用。同時你依然可以通過右鍵References的形式通過Nuget來管理這些程序集。
腳本事件

新版的VS2015允許我們在build解決方案之前、之后、過程;下載程序集之前、之后;更新程序集之前、之后自定義一些基于Nodejs的自定義事件來執行。該事件在project.json中的定義節點是scripts,示例如下:

 

  1. "scripts": { 
  2. "postrestore": [ "npm install" ], // 在更新所有的程序集之前執行npm install事件 
  3. "prepare": [ "gulp copy" ] 
  4. // 在打開解決方案之前,執行gulp任務,調用bower的install方法。 

具體的事件名稱如下:

時機 描述
prebuild 構建之前執行
postbuild 構建之后執行
prepack packing之前執行
postpack packing之后執行
prerestore restoring packages之前執行
postrestore restoring packages之后執行

 

package.json是NPM管理器的配置文件,由于在VS2015默認就深度集成了Nodejs,而NPM又是Nodejs的默認包管理器,所以所有基于Nodejs的包都要在這里進行配置。該配置文件的默認配置如下:

 

  1. "name""ASP.NET"
  2. "version""0.0.0"
  3. "devDependencies": { 
  4. "gulp""3.8.11",//gulp任務管理器 
  5. "rimraf""2.2.8" // 遞歸刪除文件的nodejs包 

上述代碼中的rimraf是一個遞歸刪除文件的nodejs包,我們也可以引用其他插件,像project.json文件中管理程序集一樣,在package.json文件中來管理前端程序的各種包,例如jquery,bootstrap等等,比如我們要安裝一個express包,只需要在json文件中添加一個express字符串鍵,并選擇器版本就可以了,系統會自動下載該NPM包并顯示在解決方案的Dependencies->NPM節點下。

注意:已經安裝的包不能自動移除(即不能通過在JSON中移除配置),需要右鍵執行該包,并手工卸載。

bower.json

所有的前端包都配置子bower.json文件中,比如你需要的jquery、bootstrap、angular等等,其管理方式與project.json里的程序集和package.json里的npm包一樣,都是通過在dependencies節點下聲明包的名稱和版本來實現的。

我們可以在此聲明一個angular包,保存以后就可以看到在解決方案Dependencie->Bower節點下該angular已經自動下載好了,編譯項目,就可以看到在wwroot/lib也可以看到angular文件夾以及相應的文件了。

在bower.json還有一個exportsOverride節點非常重要,他擴展了原來bower的前端文件copy機制,默認情況下bower只會復制main節點定義的文件。但有時候我們要復制的文件可能不止這些,所以grunt-bower-task插件就擴展了該功能,定義了這個exportsOverride節點,其使用規則如下:

如果Bower包定義了main文件節點,就將其復制到wwwroot/lib下。
如果Bower包定義了的main節點為空,則將整個包的目錄都復制到wwwroot/lib下。
如果定義了exportsOverride節點,則只會把該節點指定的文件復制到wwwroot/lib下。

注意,exportsOverride節點中定義的key/value,其中key表示要文件復制目標(即wwwroot/lib下)對應包名下的子目錄,value表示源文件目錄或文件。例如:

 

  1. "bootstrap": { 
  2. "js""dist/js/*.*"//將dist/js/下的所有文件,復制到wwwroot/lib/bootstrap/js目錄下 
  3. "css""dist/css/*.*"
  4. "fonts""dist/fonts/*.*" 
  5. }, 
  6. "jquery": { 
  7. """jquery.{js,min.js,min.map}" // 將jquery.js,jquery.min.js,jquery.min.map文件復制到wwwroot/lib/jquery目錄下 
  8. }, 

 

注意:和NPM類似,bower.json里的配置的包,不能自動移除,需要從Bower里卸載該包,并將相關的文件從wwwroot/lib中移除。

gulpfile.js

gulpfile.js是gulp任務管理器的配置文件,默認情況下,該配置文件會把wwwroot/lib目錄下的所有文件清除(clean任務),然后重新從bower_components目錄中復制一份(copy任務)。

該文件配置的修改會影響到VS里的Task Runner Explorer的顯示,如下圖所示:

以默認配置為例,該配置文件在Task目錄下注冊了兩個任務,分別是clean和copy,并默認在VS解決方案清除編譯以后重新執行clean任務,但我們也可以給該任務綁定任何一個執行時間點,我們可以右鍵該任務->綁定->在構建之前,然后在點擊面板左邊的刷新按鈕,這時候該綁定內容就會同步保存在gulpfile.js的***行,代碼如下:

 

  1. /// <binding BeforeBuild='copy' Clean='clean' /> 

此時,刪除wwwroot/lib目錄下所有的文件,然后重新編譯BookStore項目,就會自動在wwwroot/lib目錄下生成所有需要的文件,即將Bower.json里定義的各種包按照配置需求復制到該目錄下。
clean任務

clean任務的主要作用,是在編譯之前或清理解決方案是,將lib目錄下的前端文件全部刪除,以便重新copy新的文件。具體分析如下:

 

  1. var gulp = require("gulp"), // 引用gulp 
  2. rimraf = require("rimraf"),// 引用rimraf 
  3. fs = require("fs"); //引用文件系統 
  4.  
  5. eval("var project = " + fs.readFileSync("./project.json")); //讀取project.json配置文件 
  6.  
  7. var paths = { 
  8. bower: "./bower_components/"
  9. lib: "./" + project.webroot + "/lib/" 
  10. }; 
  11.  
  12. gulp.task("clean", function (cb) { //注冊clean任務 
  13. rimraf(paths.lib, cb); // 遞歸刪除lib目錄下的所有文件 
  14. }); 

 

copy任務

copy任務則很簡單,將bower_components目錄下符合條件的文件復制lib目錄下,分析如下:

 

  1. gulp.task("copy", ["clean"], function () { // 注冊copy任務 
  2. var bower = { // 目錄對應關系 
  3. "bootstrap""bootstrap/dist/**/*.{js,map,css,ttf,svg,woff,eot}"
  4. "bootstrap-touch-carousel""bootstrap-touch-carousel/dist/**/*.{js,css}"
  5. "hammer.js""hammer.js/hammer*.{js,map}"
  6. "jquery""jquery/jquery*.{js,map}"
  7. "jquery-validation""jquery-validation/jquery.validate.js"
  8. "jquery-validation-unobtrusive""jquery-validation-unobtrusive/jquery.validate.unobtrusive.js" 
  9.  
  10. for (var destinationDir in bower) { 
  11. gulp.src(paths.bower + bower[destinationDir]) // 讀取源目錄 
  12. .pipe(gulp.dest(paths.lib + destinationDir)); //復制到目標文件夾 
  13. }); 

 

Grunt任務

VS2015中,雖然默認支持的是Gulp構建工具,但其實還支持Grunt構建工具,使用方式和Gulp類似,要使用Grunt,也需要引用類似的依賴包,示例如下:

 

 

  1. "version""0.0.0"
  2. "name"""
  3. "devDependencies": { 
  4. "grunt""0.4.5"//grunt任務管理器 
  5. "grunt-bower-task""0.4.0" // 基于grunt的bower管理插件 

上述代碼中的grunt-bower-task是一個基于grunt的bower管理插件,用于自動執行bower的install命令來安裝Bower包。

注意:已經安裝的包不能自動移除(即不能通過在JSON中移除配置),需要右鍵執行該包,并手工卸載。

gruntfile.js是grunt任務管理器的配置文件,要使用grunt,就需要創建gruntfile.js文件,默認情況下,該配置文件只配置了grunt-bower-task插件的任務執行,該插件會讀取bower.json配置信息,將相關的包通過bower:install命令都安裝到指定的目錄下(默認是通過targetDir設置的wwwroot/lib目錄。

該文件配置的修改會影響到VS里的Task Runner Explorer的顯示,如下圖所示:

以默認配置為例,該配置文件注冊了一個名為default的任務在該面板里(Alias Tasks列表中)顯示,該任務也是Grunt的默認任務名稱,但并沒有定義該任務在什么時候執行,所以這時候我們可以給該任務綁定一個執行時間點,我們可以右鍵該任務->綁定->在構建之前,然后在點擊面板左邊的刷新按鈕,這時候該綁定內容就會同步保存在gruntfile.js的***行,代碼如下:

 

  1. /// <binding BeforeBuild='default' /> 

此時,刪除wwwroot/lib目錄下所有的文件,然后重新編譯BookStore項目,就會自動在wwwroot/lib目錄下生成所有需要的文件,即將Bower.json里定義的各種包按照配置需求復制到該目錄下。而Tasks中的任務,則是從grunt.loadNpmTasks里加載的包里分析出來的任務,如bower。
我們再來練習一個例子,假設我們編譯之前要對wwwroot/css/目錄下的site.css文件進行壓縮(壓縮成site.min.css),我們則可以安裝如下方式進行操作:

首先,在package.json里定義一個可以壓縮CSS代碼的grunt插件:

 

  1. "version""0.0.0"
  2. "name"""
  3. "devDependencies": { 
  4. "grunt""0.4.5"
  5. "grunt-bower-task""0.4.0"
  6. "grunt-contrib-cssmin""0.12.2" /*新的插件*/ 

然后在grunt.initConfig下的bower同級節點下面,添加如下內容:

 

  1. /*壓縮css*/ 
  2. cssmin: { 
  3. target: { 
  4. options: { 
  5. sourceMap: true, 
  6. }, 
  7. files: { 
  8. /*輸出文件路徑:原始文件路徑*/ 
  9. 'wwwroot/css/site.min.css': 'wwwroot/css/site.css' 

***再注冊此插件,代碼如下:

 

  1. grunt.loadNpmTasks('grunt-contrib-cssmin'); /*壓縮css*/ 

這樣,你就可以在Task Runner Explorer面板中看到cssmin任務,然后運行它了,當然你也可以將該任務和default任務一起添加到編譯構建之前進行執行。代碼如下:

 

  1. /// <binding BeforeBuild='default, cssmin' /> 

另外,在給一些例子,一個是用于js壓縮,一個是用于less編譯,代碼如下:

 

  1. /*package.json*/ 
  2. "grunt-contrib-uglify""0.9.1"
  3. "grunt-contrib-less""1.0.1" 
  4.  
  5. /*gruntfile.js*/ 
  6. /*壓縮js*/ 
  7. uglify: { 
  8. target: { 
  9. options: { 
  10. sourceMap: true
  11. }, 
  12. files: { 
  13. 'wwwroot/Scripts/site.min.js''wwwroot/Scripts/site.js' 
  14. }, 
  15. /*編譯less*/ 
  16. less: { 
  17. //開發版(無壓縮) 
  18. development: { 
  19. options: { 
  20. sourceMap: true 
  21. }, 
  22. files: { 
  23. 'wwwroot/Styles/site.css''wwwroot/Lesses/site.less' 
  24. }, 
  25. //生產版(壓縮) 
  26. production: { 
  27. options: { 
  28. compress: true 
  29. }, 
  30. files: { 
  31. 'wwwroot/Styles/site.min.css''wwwroot/Lesses/site.less' 
  32. /*...*/ 
  33. grunt.loadNpmTasks('grunt-contrib-uglify'); /*壓縮js*/ 
  34. grunt.loadNpmTasks('grunt-contrib-less'); /*編譯less*/ 

 

建議:不要在多個時期都綁定同一種任務。
推薦:grunt還有一個插件用于監控文件的修改,比如兼容css文件的修改,一旦修改了就調用css的壓縮命令,詳情請參考grunt-contrib-watch插件。

config.json

config.json就是以前的web.config,但是沒有web.config擁有各種類型的配置那么強大,其中各種功能的配置都以代碼的形式轉移到Startup.cs文件中了;另外一部分信息配置內容,則放在config.json文件中以json的格式進行保存。

注意,該文件的信息默認并沒有自動加載,而是需要自己手工加載該配置信息,代碼如下:

 

  1. //Startup.cs類的構造函數中 
  2. Configuration = new Configuration() 
  3. .AddJsonFile("config.json"
  4. .AddEnvironmentVariables(); 

通過Configuration實例加載該配置文件,保存在Configuration屬性中,以便可以在其它地方進行使用,而使用時候的key值,則是按照層級來定義的,以如下默認內容來說:

 

  1. "AppSettings": { 
  2. "SiteTitle""WebDemo01" 

要獲取鏈接字符串,則需要使用如下key值:

 

  1. var connString = Configuration.Get("AppSettings:SiteTitle"); 

使用起來,沒有web.config方便了,但是為了兼容其它操作系統,只能這樣了。

注意:在ASP.NET5中,配置信息不僅支持json格式,還支持ini、xml等格式,具體詳細請參考后續的配置信息管理章節。

Startup.cs

Startup.cs是整個程序的啟動入口,類似于Global.asax,和Global.asax文件一樣,起到全局配置信息的作用。我們來分析一下該文件的幾個重要作用。

首先在構造函數中初始化基礎配置信息(關于詳細的配置信息內容請參考配置信息管理章節),注意這里的初始化后的配置信息綁定到一個Configuration屬性上了,以便另外兩個方法在后期進行使用,如果你要在其它類中進行使用,則需要將該實例保存到其它地方(如靜態變量)。

ConfigureServices方法是依賴注入的核心,在方法的傳入參數services中,首先保存了默認依賴注入里定義的類型定義,然后我們在這個方法里,可以繼續注冊依賴注入的類型定義,關于依賴注入的詳細內容,可以閱讀依賴注入章節。

同時一些重要的功能需要開啟的話,也需要在這里開啟,比如添加Mvc模塊,就需要使用如下調用語句:

services.AddMvc();

原因是因為,在新版的ASP.NET 5中,除了最基礎的模塊以外,絕大部分模塊都是純組件化的,這里稱為Middleware,而組件在使用的時候首先需要先添加該模塊才能使用。再比如,添加EF模塊的話,需要調用

services.AddEntityFramework()方法。

而另外一個Configure方法,顧名思義是對各種Middleware組件進行配置的地方,一般來說,配置模塊的方法都是調用類似app.UseXXX()這樣的方法,如使用靜態文件處理流程,則調用如下語句即可:

 

  1. app.UseStaticFiles(); 

如果要使用Mvc的功能,則需要使用app.UseMvc方法,在調用這些方法時,可以配置并傳入響應的參數。

注意,ConfigureServices里用到的services.AddXXX()類型的方法和Configure方法里用到的app.UseXXX()類型的方法都是擴展方法,AddXXX()方法是在IServiceCollection接口上進行擴展的,而UseXXX()方法則是在IApplicationBuilder接口上擴展的。

關于該文件中提到的依賴注入、以及Configure方法中的3個類型的參數:IApplicationBuilder、IHostingEnvironment、ILoggerFactory;我們會在后續的章節中進行詳細講解。

其它

通過查看,可以發現,Views目錄下的web.config也被移除了,在RC版中,要統一引用命名空間,需要在 ViewStart.cshtml 或者 GlobalImport.cshtml 文件中,后續章節我們會講到。

我們不用做任何修改,F5運行項目即可運行,由于默認使用的是IIS Express,所以會自動打開新網站首頁。如果不是IIS Express,請閱讀后續的編譯與部署章節。

責任編輯:chenqingxiang 來源: 湯姆大叔的博客
相關推薦

2015-07-27 09:25:45

core data

2010-07-25 14:37:40

telnet命令

2012-03-05 13:41:58

OpenFlow

2010-09-10 14:25:00

Daytime協議

2010-07-12 17:02:33

Netstat TCP

2010-09-09 17:05:37

PPPoE協議

2010-07-08 12:34:46

HART協議

2015-06-16 15:01:59

ASP.NET 5

2011-07-01 16:04:45

Qt Python

2011-06-14 14:41:14

Python Qt

2011-06-14 15:45:02

Qt Object

2010-09-17 15:28:45

Internet網絡協

2010-08-31 16:03:15

2024-10-28 08:15:32

2011-06-14 17:03:03

QML Qt

2021-03-26 14:00:27

物聯網藍牙低功耗

2022-08-05 11:33:40

云計算

2011-06-30 11:14:23

QML Desktop

2023-11-08 14:41:12

Python函數

2010-06-17 14:57:44

RS-232協議
點贊
收藏

51CTO技術棧公眾號

亚洲天堂av高清| 欧美韩国日本综合| 亚洲色图欧美在线| 91在线无精精品一区二区| 成年人av电影| 国内精品麻豆美女在线播放视频 | 男人天堂亚洲二区| 日韩**一区毛片| 日韩视频―中文字幕| 特种兵之深入敌后| 欧美舌奴丨vk视频| 精品一区二区三区香蕉蜜桃| 欧美国产视频一区二区| 黄色片视频免费观看| 日本在线视频一区二区| 一区二区三区 在线观看视频| 精品久久久久久一区| 中文字幕日本人妻久久久免费 | 中国日韩欧美久久久久久久久| 久久艹这里只有精品| 电影在线高清| 国产成人精品综合在线观看 | 国产一级在线观看视频| 国产a久久精品一区二区三区 | 91国产视频在线播放| 欧美自拍偷拍网| 久久精品国产亚洲5555| 在线播放欧美女士性生活| 欧美亚洲另类色图| 新版中文在线官网| 国产精品美女久久久久久久久久久| 国产精华一区| 欧美久久久久久久久久久久| 色婷婷狠狠五月综合天色拍 | 亚洲国产经典视频| 国产成人高潮免费观看精品| 久草综合在线视频| 成人羞羞视频播放网站| 精品免费国产二区三区| 三级视频中文字幕| 小早川怜子影音先锋在线观看| 国产一区二区三区四区在线观看| 欧美在线视频网站| 人妻丰满熟妇aⅴ无码| 中文字幕成人| 色嗨嗨av一区二区三区| 男女激情免费视频| 国产精品无码人妻一区二区在线 | av中文字幕一区二区| 亚洲特级片在线| 久久伦理网站| 丰满熟妇人妻中文字幕| 男女精品视频| 欧美激情精品久久久久久免费印度| 国内精品卡一卡二卡三| 欧美天堂社区| 欧美一二三区精品| 国内外成人免费在线视频| 黄色综合网址| www.成人网.com| 成人福利免费观看| 九九热最新视频| 国产日韩专区| 亚洲网站在线播放| 特大黑人巨人吊xxxx| 日韩最新av| 色菇凉天天综合网| 成年人午夜视频在线观看| av文字幕在线观看| 综合电影一区二区三区| 宅男一区二区三区| 麻豆av在线免费看| 国产精品久久久久久久久动漫 | www.中文字幕av| 国产乱人伦丫前精品视频| 欧美大片一区二区三区| 8x8ⅹ国产精品一区二区二区| 性生交大片免费看女人按摩| 精品一区二区在线免费观看| 91精品久久久久久久久久| av首页在线观看| 日韩高清不卡一区二区三区| 国产成一区二区| 日本成人一级片| 亚洲九九精品| 日韩av电影在线免费播放| 亚洲 欧美 成人| 免费视频一区二区三区在线观看| 国产91免费看片| 波多野结衣一区二区三区四区| 久色成人在线| 国产欧美在线播放| 国产又粗又猛视频| 国产不卡视频一区| 国产精品一区二区免费| 天天综合天天综合| 国产视频一区在线播放| 亚洲一卡二卡三卡四卡无卡网站在线看| 99青草视频在线播放视| 亚洲欧洲性图库| 69精品丰满人妻无码视频a片| 欧美videos另类精品| 亚洲一二三四久久| 成人性视频欧美一区二区三区| 久久婷婷五月综合色丁香| 这里只有精品99re| 亚洲精品在线网址| 老司机成人在线| 国产一区二区三区网站| 小泽玛利亚一区二区免费| 欧美网站在线| 日本最新高清不卡中文字幕| 中国老头性行为xxxx| 国产成人av自拍| 欧美视频观看一区| 91高清在线观看视频| 天天影视涩香欲综合网| 亚洲第一狼人区| 日韩免费一级| 亚洲色图国产精品| 天天干中文字幕| 久久久久久穴| 亚洲一区二区三区乱码aⅴ| 日韩一区免费视频| 一区在线观看视频| 女人和拘做爰正片视频| 国产精品日韩精品在线播放| 亚洲欧美日韩久久久久久| 卡通动漫亚洲综合| 欧美亚洲一级| 国产综合久久久久久| 男男激情在线| 一区二区三区中文字幕| 北条麻妃av高潮尖叫在线观看| 午夜视频在线观看精品中文| 自拍偷拍亚洲区| 国产精品theporn动漫| 九九视频精品免费| 欧美日韩精品免费观看视一区二区| 成人黄色网址| 欧美日韩aaaaaa| 亚洲一级av无码毛片精品| 欧美在线观看天堂一区二区三区| 国产精品美乳一区二区免费| 四虎在线视频| 亚洲国产精品麻豆| 中文字幕在线视频一区二区| 欧美亚洲在线日韩| 日本精品久久久久影院| 免费观看黄一级视频| 亚洲图片欧美激情| 日韩中文字幕在线视频观看| 亚洲精品影片| 日韩一区二区三区视频| 国产精品成人无码免费| 亚洲少妇在线| 国产一区二区三区av在线| 欧美亚洲系列| 日韩一级免费观看| 91在线播放观看| 国产资源在线一区| 一区二区在线观| 素人啪啪色综合| 亚洲午夜精品久久久久久性色 | 日本91福利区| 欧美黄色直播| 这里有精品可以观看| 亚洲国产古装精品网站| 欧美黄色免费看| 精品系列免费在线观看| 一区二区三区av在线| 日本精品久久| 日韩最新免费不卡| 国产精品久久久久久久久久久久久久久久 | 92福利视频午夜1000合集在线观看| av网在线观看| 欧美日韩视频在线观看一区二区三区 | 夜级特黄日本大片_在线| 欧美性做爰猛烈叫床潮| 呻吟揉丰满对白91乃国产区| 美腿丝袜一区二区三区| 亚洲一区二区在| 午夜精品久久久久久毛片| 欧美成人午夜激情| 成人小说亚洲一区二区三区| 亚洲成av人片一区二区三区| 国产乱了高清露脸对白| 久久综合图片| 综合久久国产| 综合久久成人| 69精品小视频| 国产一区二区三区不卡在线| 在线观看日韩电影| 国产午夜手机精彩视频| 北条麻妃一区二区三区| 欧美性大战久久久久xxx| 欧美精选一区二区三区| 成人黄色av播放免费| 久久不射影院| 欧美精品一区二区久久久| 青青草手机在线观看| av福利精品导航| 一级黄色香蕉视频| 综合激情网站| 欧美精品尤物在线| 日韩护士脚交太爽了| 欧美激情一级欧美精品| 日韩av资源站| 欧美精品在欧美一区二区少妇| 男女免费视频网站| 国产亚洲欧美一区在线观看| 一个色综合久久| 一本色道久久综合亚洲精品高清| 日韩色妇久久av| 综合激情五月婷婷| 国产精品无码专区在线观看| 黄色动漫在线| 亚洲午夜未满十八勿入免费观看全集 | 久久久久久久综合| 亚洲视频在线不卡| 老鸭窝91久久精品色噜噜导演| 国产系列第一页| 日本国产精品| 1区1区3区4区产品乱码芒果精品| 亚洲天堂手机| 欧美精品手机在线| 五月婷婷在线播放| 欧美日韩亚洲国产综合| 亚洲欧美综合另类| 亚洲视频网在线直播| 亚洲熟妇一区二区三区| 国产高清精品在线| 亚洲欧美视频二区| 亚洲女优在线| 欧妇女乱妇女乱视频| 青草国产精品| 久久亚裔精品欧美| 97一区二区国产好的精华液| 国产精品一香蕉国产线看观看| 欧亚av在线| 欧美肥臀大乳一区二区免费视频| 最近高清中文在线字幕在线观看| 亚洲国产精品悠悠久久琪琪| 无码人妻精品一区二区三区不卡| 尤物视频一区二区| 极品美妇后花庭翘臀娇吟小说| 26uuu成人网一区二区三区| 中文字幕18页| 免费在线毛片| 欧美日韩国产色视频| 婷婷在线精品视频| 国产精品久久久久国产精品日日| 国产熟妇搡bbbb搡bbbb| a级精品国产片在线观看| 国产91在线免费观看| 秋霞午夜鲁丝一区二区老狼| 蜜臀精品一区二区| 国产伦一区二区三区| 狼狼综合久久久久综合网| 国内精品偷拍| 国产一区视频观看| 日韩视频在线直播| 亚洲综合精品一区二区| 白嫩亚洲一区二区三区| 成人黄在线观看| 24小时成人在线视频| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 亚洲一区美女| 全球成人免费直播| 深夜福利成人| 欧美偷拍自拍| 在线观看成人av| 色婷婷综合网| 一区二区视频在线播放| 欧美日韩一区二区三区视频播放| 麻豆av一区二区| 久久成人高清| 婷婷五月色综合| 欧美hentaied在线观看| 超碰免费在线公开| 欧美成人午夜| 嫩草影院中文字幕| 国产精品久久久亚洲一区| 国模吧无码一区二区三区| 男人的天堂亚洲在线| 国产熟人av一二三区| 久久99久久精品| 国产成人强伦免费视频网站| 国产专区综合网| 成年人的黄色片| 久久在线观看免费| 成人免费视频入口| 亚洲狠狠丁香婷婷综合久久久| 国产亚洲精品女人久久久久久| 亚洲国产精品一区二区www| 日韩视频在线观看一区| 欧美日韩国产免费| 国产极品久久久| 亚洲国产福利在线| av在线电影院| 成人97在线观看视频| hd国产人妖ts另类视频| 热草久综合在线| 成人午夜一级| av一区二区三区免费| 麻豆精品99| 亚洲午夜精品久久久中文影院av| 你懂的国产精品永久在线| 日本日本19xxxⅹhd乱影响| 久久精品导航| 日本一二三四区视频| 99re热视频精品| chinese全程对白| 午夜天堂影视香蕉久久| 中文字幕观看视频| 亚洲精品在线三区| 日本视频在线观看一区二区三区| 国产一区二区三区直播精品电影| 成人video亚洲精品| 亲爱的老师9免费观看全集电视剧| 小说区图片区亚洲| 乱一区二区三区在线播放| 91国语精品自产拍| 丝袜老师办公室里做好紧好爽| 国产综合久久久久久鬼色 | 91精品国产一区二区人妖| 亚洲欧美综合一区二区| 久久精品亚洲94久久精品| 深夜成人在线| 亚洲字幕一区二区| 日本久久一二三四| 缅甸午夜性猛交xxxx| 国模无码大尺度一区二区三区| 国产白嫩美女无套久久| 亚洲精品国产品国语在线app| 香蕉污视频在线观看| 精品久久久久久综合日本欧美| 日本在线看片免费人成视1000| 国语对白做受69| 国产精品1区| 日韩欧美视频一区二区三区四区| 亚洲黄色影院| 美女露出粉嫩尿囗让男人桶| 亚洲欧洲精品一区二区三区不卡 | 亚洲欧洲色图综合| 337p粉嫩色噜噜噜大肥臀| 日韩视频免费观看高清在线视频| 日本在线观看www| 秋霞成人午夜鲁丝一区二区三区| 97视频一区| 成人一区二区av| 国产一区999| 91视频青青草| 欧美日韩一本到| 91大神xh98hx在线播放| 日韩av不卡电影| 欧美电影在线观看免费| 2019日韩中文字幕mv| 国产在线精品一区二区夜色| 国产精品 欧美激情| 欧美一卡二卡在线观看| 麻豆视频在线播放| 成人精品视频99在线观看免费| 日韩欧美高清| 日本 片 成人 在线| 欧美经典一区二区| 国产精品sm调教免费专区| 亚洲欧美国产制服动漫| 成人免费直播| 精品在线不卡| 日韩高清一区在线| 99久久精品免费视频| 在线日韩av片| av天在线观看| 91嫩草在线视频| 欧美+亚洲+精品+三区| 国产精品熟女一区二区不卡| 亚洲精品高清视频在线观看| 国产成人a人亚洲精品无码| 欧美成人网在线| 91久久精品无嫩草影院| 性一交一乱一伧国产女士spa| 成人激情小说网站| 国产成人免费观看视频| 亚洲性猛交xxxxwww| 欧美天堂在线| 最新av在线免费观看| 国产成人啪免费观看软件| 91高清免费观看| 欧美一级淫片007| 草草在线观看| 欧美日韩三区四区| 麻豆成人久久精品二区三区红| 国产探花在线视频| 日韩欧美在线一区二区三区| 蜜臀av国内免费精品久久久夜夜| 国内精品视频在线播放| 可以看av的网站久久看| 国产97免费视频| 日韩情涩欧美日韩视频|