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

技術(shù)干貨 | Electron 插件開發(fā)實(shí)踐

開發(fā)
Electron 是以 Nodejs 和 Chromiu m 為內(nèi)核的跨平臺開發(fā)框架。 本文結(jié)合網(wǎng)易云信的實(shí)踐經(jīng)驗(yàn),對 js 和 C++ 混合編程在 Electron 桌面程序中的應(yīng)用進(jìn)行介紹。

01 前言

早期跨平臺桌面應(yīng)用開發(fā)大多采用 Qt 和 C++,受語言學(xué)習(xí)成本開發(fā)效率影響,越來越多的人將目光轉(zhuǎn)向了 Electron。Electron 是以 Nodejs 和 Chromium 為內(nèi)核的跨平臺開發(fā)框架。

Electron 基于 Web 技術(shù)開發(fā)桌面應(yīng)用,Web 技術(shù)在軟件開發(fā)領(lǐng)域應(yīng)用非常廣泛,生態(tài)較為成熟,學(xué)習(xí)成本較低、開發(fā)效率高。但是 Web 在處理多線程、并發(fā)場景時(shí)顯得捉襟見肘,Electron 底層有 Nodejs 支持,Nodejs 的插件模塊具有調(diào)用 C++ 的能力,C++ 非常適合處理高并發(fā)、音視頻等復(fù)雜業(yè)務(wù),彌補(bǔ)了 Web 的性能問題。本文就 js 和 C++ 混合編程在 Electron 桌面程序中的應(yīng)用進(jìn)行介紹。

Nodejs 中使用 C++,有以下幾種方式:

  • 將 C++ 程序作為獨(dú)立子進(jìn)程使用。
  • 通過 node-ffi 方式調(diào)用。
  • Nodejs 擴(kuò)展,將 C++ 代碼編譯為 Nodejs 模塊,本文主要針對這種方式進(jìn)行介紹。

02 C++ 擴(kuò)展

C++ 擴(kuò)展簡介 

Nodejs 本身采用 C++ 編寫,所以我們可以使用 C++ 編寫的自己的 Nodejs 模塊,可以像 Nodejs 原生模塊一樣使用。C++ 擴(kuò)展格式為 .node,其本質(zhì)為動態(tài)鏈接庫,相當(dāng)于 Windows 下 .dll。C++ 擴(kuò)展作為動態(tài)鏈接庫,通過 dlopen 在 Nodejs 中加載。

C++ 擴(kuò)展架構(gòu)圖:

C++ 擴(kuò)展實(shí)現(xiàn)的幾種方式 

實(shí)現(xiàn) C++  擴(kuò)展有3種方式:原生模式、nan、Node-API。

  • 原生模式直接使用 Nodejs API 及 Chrome V8 API 進(jìn)行開發(fā),這種方式早已被遺棄。特點(diǎn): Nodejs API 和 Chrome V8 API 接口一旦變化,依賴這些 API 的 C++ 擴(kuò)展便無法使用,特定版本的 C++ 擴(kuò)展只能在對應(yīng)版本 Nodejs 環(huán)境中使用。
  • nan(N ative Abstractions for Nodejs)nan 是 N odejs 抽象接口集,nan 根據(jù)當(dāng)前 Nodejs 版本,使用宏判斷執(zhí)行對應(yīng)版本的 AP I。特點(diǎn): C++ 擴(kuò)展在不同版  Nodejs 中運(yùn)行,需重新編譯,Nodejs 升級到較高版本后出現(xiàn)接口不兼容問題。
  • Node-APINode-API 使用 Nodejs 二進(jìn)制接口,相比 nan 方式這些二進(jìn)制接口更為穩(wěn)定。特點(diǎn): 不同版本 Nodejs 只要 abi 版本號一致,C++ 擴(kuò)展可以直接使用無需重新編譯,消除了 Nodejs 版本差異。

構(gòu)建工具 

  • node-gypnode-gyp  對 gyp(Chromium 編寫的構(gòu)建工具)進(jìn)行了封裝,binding.gyp 為其配置文件。node-gyp 工作分為兩個(gè)過程:a.  結(jié)合 binding.gyp 生成對應(yīng)平臺下的工程配置,比如:Windwos 下生成 .sln 項(xiàng)目文件。b.  項(xiàng)目文件編譯,生成 C++ 擴(kuò)展。binding.gyp 配置文件,以 Windows 為例:
{
"targets": [
{
"target_name": "addon_name",
"type": "static_library"
'defines': [
'DEFINE_FOO',
'DEFINE_A_VALUE=value',
],
'include_dirs': [
'./src/include',
'<!(node -e "require(\'nan\')")' // include NAN in your project
],
'sources': [
'file1.cc',
'file2.cc',
],
'conditions': [
[
'OS=="win"',
{
'copies': [{
'destination': '<(PRODUCT_DIR)',
'files': [
'./dll/*'
]
}],
'defines': [
'WINDOWS_SPECIFIC_DEFINE',
],
'library_dirs': [
'./lib/'
],
'link_settings': {
'libraries': [
'-lyou_sdk.lib'
]
},
'msvs_settings': {
'VCCLCompilerTool': {
'AdditionalOptions': [
'/utf-8'
]
}
},
}
]
],
},
]
}

字段說明:

  • target_name: 目標(biāo)的名稱,此名稱將用作生成的 Visual Studio 解決方案中的項(xiàng)目名稱。
  • type: 可選項(xiàng):static_library 靜態(tài)庫、executable 可執(zhí)行文件、shared_library 共享庫。
  • defines: 將在編譯命令行中傳入的 C 預(yù)處理器定義(使用 -D 或 /D 選項(xiàng))。
  • include_dirs: C++ 頭文件所在的目錄。
  • sources: C++ 源文件。
  • conditions: 適配不同環(huán)境配置條件塊。
  • copies: 拷貝 dll 動態(tài)庫到生成目錄。
  • library_dirs: 配置 lib 庫目錄到 vs 項(xiàng)目中。
  • libraries: 項(xiàng)目依賴的庫。
  • msvs_settings: Visual Studio 中屬性設(shè)置。

node-gyp 編譯指令:

node-gyp clean //清空上一次構(gòu)建目錄
node-gyp configure //配置項(xiàng)目
node-gyp build //項(xiàng)目編譯,生成C++擴(kuò)展
node-gyp rebuild //重新生成C++擴(kuò)展,相當(dāng)于clean configure build的結(jié)合
  • cmake-jscmake-js 與 node-gyp 工作原理類似。 cmake-js 是基于 CMake 的構(gòu)建系統(tǒng),而 node-gyp 是基于  Goole 的 gyp 工具,這里不在進(jìn)行詳細(xì)介紹。

回調(diào)事件處理 

Nodejs 運(yùn)行在單線程中,但它能夠支持高并發(fā),就是依賴事件循環(huán)實(shí)現(xiàn)。簡單來說 Nodejs 主線程維護(hù)一個(gè)事件隊(duì)列,收到一個(gè)耗時(shí)任務(wù)將任務(wù)放入隊(duì)列,繼續(xù)向下執(zhí)行其他任務(wù)。主線程空閑時(shí),遍歷事件隊(duì)列,非 I/O 任務(wù)親自處理,通過回調(diào)函數(shù)返回給上層調(diào)用。I/O 任務(wù)放入線程池執(zhí)行,并指定回調(diào)函數(shù),然后繼續(xù)執(zhí)行其他任務(wù)。

C++ 擴(kuò)展調(diào)用 js 回調(diào)函數(shù)時(shí),會在 Nodejs 掛在一個(gè) libuv 線程池,用于處理回調(diào)函數(shù),當(dāng) Nodejs 主線程空閑時(shí),去遍歷線程池,處理任務(wù)。libuv 具體細(xì)節(jié)參考 nertc-electron-sdk:

https://github.com/netease-im/node-nertc-sdk/blob/main/nertc_sdk_node/nertc_node_engine_event_handler.cpp

03 混合編程實(shí)踐

示例1 

結(jié)合 node-addon-api 進(jìn)行演示,node-addon-api 對 Node-API 接口進(jìn)行了封裝開發(fā)簡單。該實(shí)例完成 js 調(diào)用 C++ 函數(shù)實(shí)現(xiàn)兩個(gè)數(shù)字相加。

  • 項(xiàng)目結(jié)構(gòu)

  • package.json 配置文件
//package.json
{
"name": "addon-sdk",
"version": "0.1.0",
"description": "test nodejs addon sample",
"main": "./api/index.js",
"private": true,
"gypfile": true,
"dependencies": {
"bindings": "~1.2.1",
"node-addon-api": "^3.0.0"
},
"devDependencies": {
"node-gyp": "^8.2.0"
},
"scripts": {
"test": "node ./api/index.js"
},
"license": "ISC",
"author": "liyongqiang"
}
  • binding.gyp 配置文件
//binding.gyp
{
"targets": [
{
"target_name": "addon",
"sources": [
"./src/addon.cc",
"./src/engine.h" ,
"./src/engine.cpp"
],
"include_dirs": [
"<!@(node -p \"require('node-addon-api').include\")"
],
'defines': [
'NAPI_DISABLE_CPP_EXCEPTIONS'
]
}
]
}
  • C++ 擴(kuò)展
//addon.cc
#include <napi.h>
#include "engine.h"


Napi::Object InitAll(Napi::Env env, Napi::Object exports) {
return nertc::Engine::Init(env, exports);
}


NODE_API_MODULE(addon, InitAll)


//engine.h
#pragma once
#include <napi.h>
namespace nertc {
class Engine : public Napi::ObjectWrap<Engine> {
public:
static Napi::Object Init(Napi::Env env, Napi::Object exports);
Engine(const Napi::CallbackInfo& info);
private:
Napi::Value add(const Napi::CallbackInfo& info);
};
}


//engine.cpp
#include "engine.h"
namespace nertc {
Napi::Object Engine::Init(Napi::Env env, Napi::Object exports)
{
Napi::Function func =
DefineClass(env, "Engine",
{InstanceMethod("add", &Engine::add)});
Napi::FunctionReference* constructor = new Napi::FunctionReference();
*constructor = Napi::Persistent(func);
env.SetInstanceData(constructor);
exports.Set("Engine", func);
return exports;
}


Engine::Engine(const Napi::CallbackInfo& info): Napi::ObjectWrap<Engine>(info) {}


Napi::Value Engine::add(const Napi::CallbackInfo& info) {
Napi::Env env = info.Env();//獲取環(huán)境變量
int ret = 0;
int length = info.Length();//獲取參數(shù)個(gè)數(shù)
if (length != 2 || !info[0].IsNumber() || !info[1].IsNumber())
{
Napi::TypeError::New(env, "Number expected").ThrowAsJavaScriptException();
ret = -1;
return Napi::Number::New(env, ret);
}
int num1 = info[0].As<Napi::Number>().Int32Value();//獲取第一個(gè)參數(shù)
int num2 = info[1].As<Napi::Number>().Int32Value();////獲取第二個(gè)參數(shù)
int sum = num1 + num2;
return Napi::Number::New(env, sum);//返回結(jié)果到j(luò)s層
}
}
  • js 調(diào)用 C++ 擴(kuò)展
var addon = require('bindings')('addon');//調(diào)用C++擴(kuò)展
var engine = new addon.Engine();
console.log( `num1 + num2 = ${engine.add(1,2)}`);//輸出3

在 package.json 目錄下,執(zhí)行 npm install、npm run test,可以看到 js 調(diào)用 C++ 接口成功,輸出兩個(gè)數(shù)字相加結(jié)果。

示例2 

網(wǎng)易云信音視頻通話 nertc-electron-sdk,采 Node-API 方式進(jìn)行開發(fā),將 C++ 原生 sdk 封裝成 Nodejs 模塊(nertc-electron-sdk.node),結(jié)合 Electron 可以快速實(shí)現(xiàn)音視頻通話。github demo 體驗(yàn)地址:

https://github.com/netease-im/Basic-Video-Call/tree/master/Group-Video/NERtcSample-GroupVideoCall-Electron

04  常見問題

  • Electron 應(yīng)用中 js 調(diào)用 C++ 擴(kuò)展時(shí),提示 Error: The specified module could not be found。
    答:該錯誤表示能找到 C++ 擴(kuò)展模塊(.node)但是加載失敗,因?yàn)?.node 會依賴其他 .dll 和 C++ 運(yùn)行庫,缺少這些庫時(shí)就會報(bào)上面的錯誤,使用 depends 查看缺少哪種庫,配置即可。
  • 運(yùn)行使用 C++ 擴(kuò)展的 Electron 應(yīng)用,提示 The specifield module could not be found。
    答:該錯誤表示找不到 C++ 擴(kuò)展模塊。在項(xiàng)目 package.json 文件中配置 extraFiles 字段,將擴(kuò)展拷貝到 Electron 可加載目錄即可。
  • Electron 加載 C++ 擴(kuò)展時(shí)提示:Module parse failed: Unexpected character '?'。
    答:webpack 只能識別 js 和 json 文件無法識別 C++ 擴(kuò)展模式,在 Electron 打包時(shí)需要在 vue.config.js 中配置 C++ 擴(kuò)展的 loader。
  • 更多常見問題匯總:
    ?https://doc.yunxin.163.com/docs/jcyOTA0ODM/jU4NTEwNzg?platformId=50456#9


責(zé)任編輯:張燕妮 來源: 網(wǎng)易智企技術(shù)+
相關(guān)推薦

2022-08-04 10:12:49

桌面技術(shù)

2023-02-01 18:33:44

得物商家客服

2021-06-02 09:27:56

ElectronPepper Flas插件

2020-10-27 13:19:33

架構(gòu)APICloud多端

2024-12-03 11:59:53

2021-09-13 14:19:03

HudiLakehouse阿里云

2022-01-24 12:38:58

Vite插件開發(fā)

2018-01-11 17:22:20

PHP大數(shù)據(jù)開發(fā)

2023-12-26 10:04:29

Electron應(yīng)用開發(fā)框架

2019-01-15 09:10:17

邊緣計(jì)算數(shù)據(jù)中心IT

2024-04-28 14:22:25

鯤鵬

2021-06-29 18:26:34

數(shù)字媒體騰訊云數(shù)據(jù)庫

2009-06-04 20:26:45

2020-11-05 10:40:18

ActiveMQ

2017-06-13 09:17:17

手機(jī)QQQzone

2018-01-08 14:31:09

Electron桌面APP前端

2019-10-29 09:48:20

ElectronGithub開源庫

2018-09-03 09:22:25

監(jiān)控服務(wù)器性能

2009-06-03 16:06:28

Eclipse插件開發(fā)Eclipse
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號

中文字幕在线观看第三页| 国产日韩欧美中文| 国产精品jizz| 九九九精品视频| 亚洲自拍偷拍网站| 日韩精品不卡| 亚洲国产精品久久人人爱潘金莲| 99伊人成综合| 久久韩剧网电视剧| 朝桐光av一区二区三区| 国产第一亚洲| 免费福利在线视频| 极品销魂美女一区二区三区| 韩剧1988在线观看免费完整版| 精品人妻中文无码av在线| 亚洲精品一区二区三区中文字幕| 欧美色视频日本高清在线观看| 一区二区av| 男女视频在线观看| 国产99久久久国产精品潘金| 国产精品久久久久久久久| 日本少妇吞精囗交| 欧美在线亚洲| 日韩中文在线观看| 久久只有这里有精品| 久草在线综合| 精品国产一区久久| 色噜噜狠狠一区二区三区狼国成人| 91豆花视频在线播放| 亚洲免费在线看| 亚洲精品国产系列| 蜜桃视频在线入口www| 粉嫩绯色av一区二区在线观看| 日韩一区二区三区精品| 精品女同一区二区三区在线播放| 一本一道久久a久久精品综合 | 国产欧美日韩免费| 波多野结衣国产| 国产精品www994| 久久久精品久久| 国产精品一区二区亚洲| 国产成人影院| 亚洲欧洲激情在线| 欧美亚一区二区三区| 高清一区二区三区| 欧美精品一区二区三区蜜桃| 性生交大片免费看l| 国产精品视频首页| 麻豆成人在线观看| 欧美一区在线直播| 日韩欧美三级视频| 亚洲九九精品| 高清视频欧美一级| 国产成人精品av久久| 国内精品美女在线观看| 欧美激情伊人电影| 国产一级做a爱免费视频| 欧美日韩视频| 97精品欧美一区二区三区| 日本少妇做爰全过程毛片| 国产精品草草| 9.1国产丝袜在线观看| 成人免费视频毛片| 日韩在线一区二区| 国产精品吴梦梦| 国产精品人人妻人人爽| 国产精品99久久久久久宅男| 99re国产视频| 性xxxx视频| 国产欧美一区视频| 中文字幕在线亚洲精品| 91黄色在线| 五月激情六月综合| av丝袜天堂网| 日韩一区二区三区精品| 日韩高清中文字幕| 日本污视频网站| 亚洲一区二区三区无吗| 欧美激情二区三区| 毛片基地在线观看| 久久av老司机精品网站导航| 国产成人精品日本亚洲11| 日韩大胆人体| 国产精品天天看| 人妻激情另类乱人伦人妻| 国产高潮在线| 欧美裸体bbwbbwbbw| 美国黄色一级视频| 国产aⅴ精品一区二区三区久久| 日韩一区二区福利| 黄色一级片免费看| 九九国产精品视频| 好看的日韩精品视频在线| 岛国在线大片| 亚洲国产精品麻豆| 嫩草视频免费在线观看| 久久夜色电影| 超在线视频97| 亚洲欧美日韩激情| 国产凹凸在线观看一区二区| 欧美日韩综合精品| 日本中文字幕中出在线| 色94色欧美sute亚洲线路一ni| 四川一级毛毛片| 欧美精品一区二区三区精品| 久久久久久com| 伊人免费在线观看| 91蜜桃免费观看视频| 欧美日韩dvd| 亚洲成av在线| 亚洲精品99久久久久| 欧美三级黄色大片| 天堂午夜影视日韩欧美一区二区| www久久99| 男女啪啪在线观看| 色呦呦国产精品| 国产伦精品一区二区免费| 欧美电影免费| 国产精品高潮在线| 天堂在线观看视频| 亚洲综合在线免费观看| 中文字幕成人免费视频| 综合干狼人综合首页| 欧美精品成人在线| a级片在线免费看| 日韩一区在线看| 免费涩涩18网站入口| 九九在线精品| 欧美最猛性xxxxx免费| 欧美熟妇乱码在线一区| 伊人婷婷欧美激情| 国产免费中文字幕| 日韩欧美二区| 国产精品视频精品| chinese偷拍一区二区三区| 欧美日韩在线免费观看| 在线免费看黄色片| 亚洲二区免费| 国产一区二区在线网站| 污片视频在线免费观看| 欧美一个色资源| 东方av正在进入| 国产美女一区二区| 人妻无码一区二区三区四区| 99精品在线免费观看| 久久精品久久精品亚洲人| 国产又粗又猛又黄又爽| ...av二区三区久久精品| 九九热99视频| 亚洲先锋影音| 高清视频一区| 国产精品蜜臀| 亚洲老头同性xxxxx| 国产精品久久久久久久久久精爆| 久久久精品黄色| 国产免费999| 日韩精品永久网址| 91久久国产精品| 色爱综合区网| 日韩电视剧免费观看网站| 国产成人免费看| 国产日产欧美一区| 天天干天天操天天玩| 午夜影院欧美| 黄色国产精品一区二区三区| 美女100%一区| 久久久精品美女| 成人乱码一区二区三区| 偷偷要91色婷婷| 天天干天天舔天天操| 激情文学综合插| 日韩精品一区二区免费| 米奇777超碰欧美日韩亚洲| 国产美女精品免费电影| 色呦呦在线免费观看| 亚洲黄一区二区| 伊人网中文字幕| 亚洲自拍偷拍网站| 青娱乐国产视频| 国产成人午夜精品5599| www一区二区www免费| 久久影视一区| 国产日韩欧美综合精品 | 91超碰成人| 国产亚洲欧美一区二区三区| 成人黄色免费短视频| 久久亚洲精品一区| 四虎影视精品成人| 91精品国产综合久久香蕉麻豆 | 国产一区免费视频| 久久亚洲国产精品尤物| 性欧美xxxx| 天堂а√在线官网| 日韩电影中文字幕| 国产精品国产一区二区三区四区| 精品magnet| 熟女少妇a性色生活片毛片| 91在线观看污| 亚洲热在线视频| 奇米影视7777精品一区二区| 日韩激情视频一区二区| 日本一二区不卡| 久久久影院一区二区三区| 99久热在线精品视频观看| 欧美孕妇毛茸茸xxxx| 中文字幕免费高清电视剧网站在线观看| 亚洲欧美福利视频| 亚洲第一天堂影院| 欧美乱熟臀69xxxxxx| 无码人妻丰满熟妇精品区| 亚洲综合成人在线| 久久久久久视频| 国产日产欧美一区二区视频| 一区二区视频观看| 国产成人亚洲综合a∨猫咪| 午夜视频在线网站| 日日夜夜免费精品视频| 美女日批免费视频| 影音先锋久久| 欧美一二三不卡| 99精品美女| 午夜久久资源| 国产99久久久国产精品成人免费| 国产 高清 精品 在线 a| 在线视频成人| 国产有码一区二区| 91亚洲视频| 国产成人在线精品| 成人av三级| 欧洲亚洲免费视频| 中文日产幕无线码一区二区| 久久久亚洲国产天美传媒修理工| 色网在线观看| 欧美日韩成人在线观看| 91麻豆一二三四在线| 欧美成年人在线观看| 成人影欧美片| 欧美成人精品在线播放| a免费在线观看| 久久国产精品99国产精| 国产在线更新| 欧美成人网在线| 在线观看中文| 欧美精品18videosex性欧美| 国产丝袜在线播放| 97在线日本国产| 欧美激情网站| 日韩av日韩在线观看| 韩国精品主播一区二区在线观看| 国产精欧美一区二区三区| 青青热久免费精品视频在线18| 日本亚洲欧美成人| 在线成人视屏| 91视频九色网站| 99ri日韩精品视频| 久久久人人爽| 日本a级不卡| 咪咪色在线视频| 欧美日韩国产色综合一二三四| 日韩免费在线观看av| aⅴ色国产欧美| 国产精品wwwww| 蜜臀久久久久久久| 在线观看一区二区三区视频| 成人深夜视频在线观看| 日韩精品电影一区二区| 国产精品国产三级国产aⅴ无密码 国产精品国产三级国产aⅴ原创 | 久热精品视频在线| 草美女在线观看| 57pao成人国产永久免费| 日本一区二区三区视频在线| 国产一区视频在线| 久久成人福利| 神马影院午夜我不卡影院| 亚洲精品国产首次亮相| koreanbj精品视频一区| 日韩—二三区免费观看av| 亚洲高清视频免费| 99精品视频在线观看免费| 呻吟揉丰满对白91乃国产区| 一区二区三区精品久久久| 国产伦精品一区二区三区视频网站| 欧美日韩中文字幕精品| 亚洲精品911| 夜夜嗨av色一区二区不卡| 2024最新电影免费在线观看| 热久久这里只有精品| 久久综合偷偷噜噜噜色| 欧美连裤袜在线视频| 亚洲一区欧美| 密臀av一区二区三区| 国产91精品露脸国语对白| 人妻少妇无码精品视频区| 一区二区三区在线视频观看58| 波多野结衣啪啪| 欧美精品一区二区三区蜜臀| 美女写真理伦片在线看| 欧美在线免费看| 亚洲精品一区二区三区中文字幕 | 欧美区一区二| 18岁视频在线观看| 国产成人一级电影| 久久久精品成人| 精品福利在线视频| 国产99对白在线播放| 在线观看日韩www视频免费| 另类视频在线| 92裸体在线视频网站| 国产影视一区| 国产精品网站免费| 国产精品一区二区在线看| 国精产品一区一区三区免费视频| 一区二区在线看| 亚洲最大成人在线视频| 亚洲日本aⅴ片在线观看香蕉| 久久不射影院| 99久久精品久久久久久ai换脸| 成人精品亚洲| 欧洲av无码放荡人妇网站| 丁香另类激情小说| www.xxxx日本| 欧美日韩另类一区| 国产中文在线视频| 68精品久久久久久欧美| 北条麻妃在线一区二区免费播放 | 亚洲性色av| 国产自产在线视频一区| 欧美三级午夜理伦三级中文幕| 污污视频网站在线| 国产精品国产a级| 中文字幕网址在线| 综合久久五月天| av免费在线一区| 日韩av高清| 日本欧美一区二区三区乱码| 亚洲熟妇无码av| 欧美性猛交xxxx免费看| 欧美孕妇孕交xxⅹ孕妇交| 91国语精品自产拍在线观看性色| 大型av综合网站| 五十路熟女丰满大屁股| 99免费精品在线观看| 天天操中文字幕| 日韩精品中文字幕有码专区| 成人观看网址| 蜜桃欧美视频| 久久婷婷麻豆| 国产又粗又猛又爽又黄的视频四季| 日本精品视频一区二区三区| 国产专区在线| 国产精品综合久久久| 天天超碰亚洲| 少妇熟女视频一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 丰满人妻一区二区三区四区53| 高清欧美性猛交xxxx黑人猛交| 欧美日韩麻豆| 亚洲国产精品久久久久爰色欲| 欧美国产精品一区二区| 在线观看免费中文字幕| 久久夜精品香蕉| 国产精品15p| 黄色一级大片在线观看| ...av二区三区久久精品| 丰满肉嫩西川结衣av| 茄子视频成人在线| 日韩激情在线| 成人啪啪18免费游戏链接| 色综合久久99| 理论片午午伦夜理片在线播放| 99国产视频| 羞羞视频在线观看欧美| 欧美a级片免费看| 亚洲福利影片在线| se01亚洲视频| 免费观看中文字幕| a在线欧美一区| 中文字幕观看视频| 欧美激情亚洲精品| 九色精品国产蝌蚪| 欧美国产在线一区| 欧美午夜精品在线| 免费网站成人| 精品在线视频一区二区| 毛片一区二区三区| 国产精品自拍视频一区| 国产一区二区三区在线观看网站| 国产一区二区久久久久| 国产精品va无码一区二区| 中文字幕日韩一区二区| 香蕉久久一区二区三区| 91网站免费看| 男女av一区三区二区色多| 丝袜 亚洲 另类 欧美 重口| 日韩成人黄色av| 日韩在线网址| 久久久精品麻豆| 天天综合色天天综合| 黄色在线免费| 品久久久久久久久久96高清|