中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久

針對(duì)HTML5的Web Worker使用攻略
來(lái)源:易賢網(wǎng) 閱讀:1560 次 日期:2016-07-09 10:45:50
溫馨提示:易賢網(wǎng)小編為您整理了“針對(duì)HTML5的Web Worker使用攻略”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了針對(duì)HTML5的Web Worker使用攻略,特別是結(jié)合worker拿手的JS使用起來(lái)十分有效,需要的朋友可以參考下

Web Workers 是 HTML5 提供的一個(gè)javascript多線程解決方案,我們可以將一些大計(jì)算量的代碼交由web Worker運(yùn)行而不凍結(jié)用戶界面。

一:如何使用Worker

Web Worker的基本原理就是在當(dāng)前javascript的主線程中,使用Worker類加載一個(gè)javascript文件來(lái)開(kāi)辟一個(gè)新的線程,起到互不阻塞執(zhí)行的效果,并且提供主線程和新線程之間數(shù)據(jù)交換的接口:postMessage,onmessage。

那么如何使用呢,我們看一個(gè)例子:

JavaScript Code

//worker.js   

onmessage =function (evt){   

  var d = evt.data;//通過(guò)evt.data獲得發(fā)送來(lái)的數(shù)據(jù)   

  postMessage( d );//將獲取到的數(shù)據(jù)發(fā)送會(huì)主線程   

}  

HTML頁(yè)面:test.html

XML/HTML Code

<!DOCTYPE HTML>  

<html>  

<<span style="width: auto; height: auto; float: none;" id="20_nwp"><a style="text-decoration: none;" mpid="20" target="_blank" id="20_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">head</span></a></span>>  

 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  

 <script type="text/<span style="width: auto; height: auto; float: none;" id="21_nwp"><a style="text-decoration: none;" mpid="21" target="_blank" id="21_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">javascript</span></a></span>">  

//WEB頁(yè)主線程   

var worker =new Worker("worker.js"); //創(chuàng)建一個(gè)Worker對(duì)象并向它傳遞將在新線程中執(zhí)行的腳本的URL   

 worker.postMessage("hello world");     //向worker發(fā)送數(shù)據(jù)   

 worker.onmessage =function(evt){     //接收worker傳過(guò)來(lái)的數(shù)據(jù)<span style="width: auto; height: auto; float: none;" id="22_nwp"><a style="text-decoration: none;" mpid="22" target="_blank" id="22_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">函數(shù)</span></a></span>  

   console.log(evt.<span style="width: auto; height: auto; float: none;" id="23_nwp"><a style="text-decoration: none;" mpid="23" target="_blank" id="23_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">data</span></a></span>);              //輸出worker發(fā)送來(lái)的數(shù)據(jù)   

 }   

 </script>  

 </head>  

 <body></body>  

</html>  

用Chrome瀏覽器打開(kāi)test.html后,控制臺(tái)輸出 ”hello world” 表示程序執(zhí)行成功。

通過(guò)這個(gè)例子我們可以看出使用web worker主要分為以下幾部分

WEB主線程:

1.通過(guò) worker = new Worker( url ) 加載一個(gè)JS文件來(lái)創(chuàng)建一個(gè)worker,同時(shí)返回一個(gè)worker實(shí)例。

2.通過(guò)worker.postMessage( data ) 方法來(lái)向worker發(fā)送數(shù)據(jù)。

3.綁定worker.onmessage方法來(lái)接收worker發(fā)送過(guò)來(lái)的數(shù)據(jù)。

4.可以使用 worker.terminate() 來(lái)終止一個(gè)worker的執(zhí)行。

worker新線程:

1.通過(guò)postMessage( data ) 方法來(lái)向主線程發(fā)送數(shù)據(jù)。

2.綁定onmessage方法來(lái)接收主線程發(fā)送過(guò)來(lái)的數(shù)據(jù)。

二:Worker能做什么

知道了如何使用web worker ,那么它到底有什么用,可以幫我們解決那些問(wèn)題呢。我們來(lái)看一個(gè)fibonacci數(shù)列的例子。

大家知道在數(shù)學(xué)上,fibonacci數(shù)列被以遞歸的方法定義:F0=0,F(xiàn)1=1,F(xiàn)n=F(n-1)+F(n-2)(n>=2,n∈N*),而javascript的常用實(shí)現(xiàn)為:

JavaScript Code

var fibonacci =function(n) {   

    return n <2? n : arguments.callee(n -1) + arguments.callee(n -2);   

};   

//fibonacci(36)  

在chrome中用該方法進(jìn)行39的fibonacci數(shù)列執(zhí)行時(shí)間為19097毫秒 ,而要計(jì)算40的時(shí)候?yàn)g覽器直接提示腳本忙了。

由于javascript是單線程執(zhí)行的,在求數(shù)列的過(guò)程中瀏覽器不能執(zhí)行其它javascript腳本,UI渲染線程也會(huì)被掛起,從而導(dǎo)致瀏覽器進(jìn)入僵死狀態(tài)。使用web worker將數(shù)列的計(jì)算過(guò)程放入一個(gè)新線程里去執(zhí)行將避免這種情況的出現(xiàn)。具體看例子:

JavaScript Code

//fibonacci.js   

var fibonacci =function(n) {   

    return n <2? n : arguments.callee(n -1) + arguments.callee(n -2);   

};   

onmessage =function(event) {   

    var n = parseInt(event.<span style="width: auto; height: auto; float: none;" id="16_nwp"><a style="text-decoration: none;" mpid="16" target="_blank" id="16_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">data</span></a></span>, 10);   

    postMessage(fibonacci(n));   

};  

HTML頁(yè)面:fibonacci.html

XML/HTML Code

<!DOCTYPE HTML>  

<html>  

<<span style="width: auto; height: auto; float: none;" id="11_nwp"><a style="text-decoration: none;" mpid="11" target="_blank" id="11_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">head</span></a></span>>  

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  

<title>web worker fibonacci</title>  

<script type="text/<span style="width: auto; height: auto; float: none;" id="12_nwp"><a style="text-decoration: none;" mpid="12" target="_blank" id="12_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">javascript</span></a></span>">  

  onload =function(){   

      var worker =new Worker('fibonacci.js');     

      worker.addEventListener('message', function(event) {   

        var timer2 = (new Date()).valueOf();   

           console.log( '結(jié)果:'+event.<span style="width: auto; height: auto; float: none;" id="13_nwp"><a style="text-decoration: none;" mpid="13" target="_blank" id="13_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">data</span></a></span>, '時(shí)間:'+ timer2, '用時(shí):'+ ( timer2  - timer ) );   

      }, false);   

      var timer = (new Date()).valueOf();   

      console.log('開(kāi)始計(jì)算:40','時(shí)間:'+ timer );   

      setTimeout(function(){   

          console.log('定時(shí)器<span style="width: auto; height: auto; float: none;" id="14_nwp"><a style="text-decoration: none;" mpid="14" target="_blank" id="14_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">函數(shù)</span></a></span>在計(jì)算數(shù)列時(shí)執(zhí)行了', '時(shí)間:'+ (new Date()).valueOf() );   

      },1000);   

      worker.postMessage(40);   

      console.log('我在計(jì)算數(shù)列的時(shí)候執(zhí)行了', '時(shí)間:'+ (new Date()).valueOf() );   

  }     

  </script>  

</<span style="width: auto; height: auto; float: none;" id="15_nwp"><a style="text-decoration: none;" mpid="15" target="_blank" id="15_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">head</span></a></span>>  

<body>  

</body>  

</html>  

在Chrome中打開(kāi)fibonacci.html,控制臺(tái)得到如下輸出:

開(kāi)始計(jì)算:40 時(shí)間:1316508212705

我在計(jì)算數(shù)列的時(shí)候執(zhí)行了 時(shí)間:1316508212734

定時(shí)器

XML/HTML Code

<span style="width: auto; height: auto; float: none;" id="9_nwp"><a style="text-decoration: none;" mpid="9" target="_blank" id="9_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">函數(shù)</span></a></span>  

在計(jì)算數(shù)列時(shí)執(zhí)行了 時(shí)間:1316508213735

結(jié)果:102334155 時(shí)間:1316508262820 用時(shí):50115

這個(gè)例子說(shuō)明在worker中執(zhí)行的fibonacci數(shù)列的計(jì)算并不會(huì)影響到主線程的代碼執(zhí)行,完全在自己獨(dú)立的線程中計(jì)算,只是在計(jì)算完成之后將結(jié)果發(fā)回主線程。

利用web worker我們可以在前端執(zhí)行一些復(fù)雜的大量運(yùn)算而不會(huì)影響頁(yè)面的展示,并且不會(huì)彈出惡心的腳本正忙提示。

下面這個(gè)例子使用了web worker來(lái)計(jì)算場(chǎng)景中的像素,場(chǎng)景打開(kāi)時(shí)是一片一片進(jìn)行繪制的,一個(gè)worker只計(jì)算一塊像素值。

http://nerget.com/rayjs-mt/rayjs.html

三:Worker的其他嘗試

我們已經(jīng)知道Worker通過(guò)接收一個(gè)URL來(lái)創(chuàng)建一個(gè)worker,那么我們是否可以利用web worker來(lái)做一些類似jsonp的請(qǐng)求呢,大家知道jsonp是通過(guò)插入script標(biāo)簽來(lái)加載json數(shù)據(jù)的,而script元素在加載和執(zhí)行過(guò)程中都是阻塞式的,如果能利用web worker實(shí)現(xiàn)異步加載將會(huì)非常不錯(cuò)。

下面這個(gè)例子將通過(guò) web worker、jsonp、ajax三種不同的方式來(lái)加載一個(gè)169.42KB大小的JSON數(shù)據(jù)

JavaScript Code

// /aj/webWorker/core.js   

function $E(id) {   

    return document.getElementById(id);   

}   

onload =function() {   

    //通過(guò)web worker加載   

    $E('workerLoad').onclick =function() {   

        var url ='http://js.wcdn.cn/aj/mblog/face2';   

        var d = (new Date()).valueOf();   

        var worker =new Worker(url);   

        worker.onmessage =function(obj) {   

            console.log('web worker: '+ ((new Date()).valueOf() - d));   

        };   

    };   

    //通過(guò)jsonp加載   

    $E('jsonpLoad').onclick =function() {   

        var url ='http://js.wcdn.cn/aj/mblog/face1';   

        var d = (new Date()).valueOf();   

        STK.core.io.scriptLoader({   

            method:'post',   

            url : url,   

            onComplete : function() {   

                console.log('jsonp: '+ ((new Date()).valueOf() - d));   

            }   

        });   

    };   

    //通過(guò)<span style="width: auto; height: auto; float: none;" id="8_nwp"><a style="text-decoration: none;" mpid="8" target="_blank" id="8_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">ajax</span></a></span>加載   

    $E('ajaxLoad').onclick =function() {   

        var url ='http://js.wcdn.cn/aj/mblog/face';   

        var d = (new Date()).valueOf();   

        STK.core.io.ajax({   

            url : url,   

            onComplete : function(json) {   

                console.log('ajax: '+ ((new Date()).valueOf() - d));   

            }   

        });   

    };   

};  

HTML頁(yè)面:/aj/webWorker/worker.html

XML/HTML Code

<!DOCTYPE HTML>  

<html>  

<<span style="width: auto; height: auto; float: none;" id="4_nwp"><a style="text-decoration: none;" mpid="4" target="_blank" id="4_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">head</span></a></span>>  

<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>  

<title>Worker example: load <span style="width: auto; height: auto; float: none;" id="5_nwp"><a style="text-decoration: none;" mpid="5" target="_blank" id="5_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">data</span></a></span></title>  

<script src="http://js.t.sinajs.cn/STK/js/gaea.1.14.js" type="text/<span style="width: auto; height: auto; float: none;" id="6_nwp"><a style="text-decoration: none;" mpid="6" target="_blank" id="6_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">javascript</span></a></span>"></script>  

<script type="text/javascript" src="http://js.wcdn.cn/aj/webWorker/core.js"></script>  

</head>  

<body>  

    <input type="button" id="workerLoad" value="web worker加載"></input>  

    <input type="button" id="jsonpLoad" value="jsonp加載"></input>  

    <input type="button" id="<span style="width: auto; height: auto; float: none;" id="7_nwp"><a style="text-decoration: none;" mpid="7" target="_blank" id="7_nwl"><span style="color:#0000ff;font-size:14px;width:auto;height:auto;float:none;">ajax</span></a></span>Load" value="ajax加載"></input>  

</body>  

</html>  

設(shè)置HOST

代碼如下:

127.0.0.1 js.wcdn.cn

通過(guò) http://js.wcdn.cn/aj/webWorker/worker.html 訪問(wèn)頁(yè)面然后分別通過(guò)三種方式加載數(shù)據(jù),得到控制臺(tái)輸出:

代碼如下:

web worker: 174

jsonp: 25

ajax: 38

多試幾次發(fā)現(xiàn)通過(guò)jsonp和ajax加載數(shù)據(jù)的時(shí)間相差不大,而web worker的加載時(shí)間一直處于高位,所以用web worker來(lái)加載數(shù)據(jù)還是比較慢的,即便是大數(shù)據(jù)量情況下也沒(méi)任何優(yōu)勢(shì),可能是Worker初始化新起線程比較耗時(shí)間。除了在加載過(guò)程中是無(wú)阻塞的之外沒(méi)有任何優(yōu)勢(shì)。

那么web worker是否能支持跨域js加載呢,這次我們通過(guò)http://127.0.0.1/aj/webWorker/worker.html 來(lái)訪問(wèn)頁(yè)面,當(dāng)點(diǎn)擊 ”web worker加載” 加載按鈕時(shí)Chrome下無(wú)任何反映,F(xiàn)F6下提示錯(cuò)誤。由此我們可以知道web worker是不支持跨域加載JS的,這對(duì)于將靜態(tài)文件部署到單獨(dú)的靜態(tài)服務(wù)器的網(wǎng)站來(lái)說(shuō)是個(gè)壞消息。

所以web worker只能用來(lái)加載同域下的json數(shù)據(jù),而這方面ajax已經(jīng)可以做到了,而且效率更高更通用。還是讓W(xué)orker做它自己擅長(zhǎng)的事吧。

四:總結(jié)

web worker看起來(lái)很美好,但處處是魔鬼。

我們可以做什么:

1.可以加載一個(gè)JS進(jìn)行大量的復(fù)雜計(jì)算而不掛起主進(jìn)程,并通過(guò)postMessage,onmessage進(jìn)行通信

2.可以在worker中通過(guò)importScripts(url)加載另外的腳本文件

3.可以使用 setTimeout(), clearTimeout(), setInterval(), and clearInterval()

4.可以使用XMLHttpRequest來(lái)發(fā)送請(qǐng)求

5.可以訪問(wèn)navigator的部分屬性

有那些局限性:

1.不能跨域加載JS

2.worker內(nèi)代碼不能訪問(wèn)DOM

3.各個(gè)瀏覽器對(duì)Worker的實(shí)現(xiàn)不大一致,例如FF里允許worker中創(chuàng)建新的worker,而Chrome中就不行

4.不是每個(gè)瀏覽器都支持這個(gè)新特性

更多信息請(qǐng)查看網(wǎng)頁(yè)制作
易賢網(wǎng)手機(jī)網(wǎng)站地址:針對(duì)HTML5的Web Worker使用攻略
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
相關(guān)閱讀網(wǎng)頁(yè)制作

2026上岸·考公考編培訓(xùn)報(bào)班

  • 報(bào)班類型
  • 姓名
  • 手機(jī)號(hào)
  • 驗(yàn)證碼
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 新媒體/短視頻平臺(tái) | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65099533/13759567129 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:1093837350(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)
中文字幕免费精品_亚洲视频自拍_亚洲综合国产激情另类一区_色综合咪咪久久
性色av香蕉一区二区| 欧美精品一线| 久久免费一区| 国产精品久久久久久超碰| 亚洲美女免费视频| 蜜桃精品一区二区三区| 国产在线不卡视频| 久久精品道一区二区三区| 国产日韩欧美另类| 午夜免费在线观看精品视频| 国产精品久久久久免费a∨ | 欧美在线视频导航| 国产精品视频内| 亚洲午夜在线观看| 国产精品你懂的在线| 午夜精彩国产免费不卡不顿大片| 国产精品白丝jk黑袜喷水| 亚洲精品综合精品自拍| 久久久久久久尹人综合网亚洲| 亚洲一区二区少妇| 亚洲影音先锋| 欧美吻胸吃奶大尺度电影| 亚洲免费大片| 欧美特黄一级大片| 亚洲欧美日韩中文播放| 国产精品永久免费在线| 欧美一区二区三区四区高清| 国产在线精品自拍| 女仆av观看一区| 一区二区不卡在线视频 午夜欧美不卡在 | 亚洲精品中文字幕有码专区| 欧美精品一区二区三区一线天视频| 最新亚洲视频| 国产精品99免费看 | 久久精品亚洲一区二区| 国产麻豆午夜三级精品| 久久青青草原一区二区| 亚洲人成啪啪网站| 国产精品爱啪在线线免费观看| 亚洲一区欧美一区| 狠狠色狠狠色综合日日五| 欧美freesex8一10精品| 9色精品在线| 国产日韩欧美二区| 男同欧美伦乱| 亚洲在线视频网站| 在线观看国产精品网站| 欧美日本亚洲韩国国产| 亚洲欧美日韩网| 在线高清一区| 国产精品久久久久久福利一牛影视| 先锋影音国产精品| 亚洲黄色av一区| 国产精品爽爽爽| 久久一区二区三区四区五区| 亚洲巨乳在线| 国产一区激情| 欧美日韩国产影院| 久久国产精品72免费观看| 亚洲精品国精品久久99热| 国产精品热久久久久夜色精品三区 | 欧美激情成人在线视频| 亚洲一区黄色| 亚洲二区免费| 国产精品久久久久久久久久直播 | 日韩视频永久免费| 国产午夜亚洲精品羞羞网站| 欧美国产日韩在线| 久久精品亚洲| 亚洲影院在线| 亚洲人午夜精品免费| 国产婷婷色一区二区三区| 欧美黄色影院| 久久久之久亚州精品露出| 亚洲欧美国产高清| 日韩亚洲精品视频| 亚洲国产免费看| 国产亚洲精品自拍| 国产精品欧美日韩一区| 欧美日韩高清在线观看| 卡通动漫国产精品| 午夜精品久久久久99热蜜桃导演| 亚洲日本中文字幕| 一区二区视频在线观看| 国产欧美日韩一级| 国产精品yjizz| 欧美黄色一区| 美女尤物久久精品| 久久久久久网| 欧美影院成年免费版| 亚洲影院免费| 亚洲一区二区精品视频| 99国产精品久久久久久久久久| 在线播放豆国产99亚洲| 国产视频久久久久| 国产欧美韩国高清| 国产美女一区| 国产三级精品三级| 国产日韩欧美精品一区| 国产精品美女久久福利网站| 国产精品成人aaaaa网站| 欧美日韩一区在线观看| 欧美日韩精品伦理作品在线免费观看| 欧美大片一区二区三区| 欧美aa在线视频| 美腿丝袜亚洲色图| 欧美国产第一页| 欧美激情亚洲| 欧美色123| 国产九九视频一区二区三区| 国产午夜精品视频| 极品少妇一区二区三区精品视频 | 国产精品嫩草久久久久| 国产精品久久久久久av福利软件| 欧美视频一区二区在线观看| 国产精品第一区| 国产欧美日韩在线观看| 国内精品久久久久久久影视蜜臀| 国产午夜精品久久久久久免费视| 国产夜色精品一区二区av| 激情综合激情| 亚洲日韩中文字幕在线播放| 亚洲人成小说网站色在线| 亚洲精一区二区三区| 夜夜躁日日躁狠狠久久88av| 亚洲天堂成人| 久久国产主播精品| 久久夜色精品国产亚洲aⅴ| 欧美99久久| 欧美日韩免费视频| 国产精品亚洲欧美| 精品成人一区二区| 亚洲区中文字幕| 亚洲一区二三| 久久视频在线免费观看| 欧美国产先锋| 国产精品久久久久久亚洲调教| 国产日韩欧美综合| 亚洲精品看片| 亚洲欧美日韩国产综合在线| 久久久夜色精品亚洲| 欧美日韩黄色大片| 韩国精品久久久999| 亚洲精品欧美精品| 午夜久久电影网| 麻豆国产va免费精品高清在线| 欧美精品三区| 国产色爱av资源综合区| 亚洲国产影院| 欧美亚洲在线播放| 欧美精品激情| 国产一区二区三区自拍| 亚洲精品一区在线观看香蕉| 香蕉av777xxx色综合一区| 欧美a级片网| 国产深夜精品| 99国产精品久久久久久久| 久久精品国产一区二区电影| 欧美精品电影| 狠狠v欧美v日韩v亚洲ⅴ| 日韩系列在线| 久久久www成人免费毛片麻豆| 欧美日韩精品一区二区三区四区| 国产一区二区三区电影在线观看| 99av国产精品欲麻豆| 久久一区国产| 国产一区二区三区丝袜| 一区二区日韩| 欧美激情亚洲自拍| 黄色av日韩| 性欧美videos另类喷潮| 欧美日韩视频在线| 亚洲电影在线免费观看| 香蕉乱码成人久久天堂爱免费| 欧美成人精品1314www| 国产亚洲综合精品| 亚洲一卡二卡三卡四卡五卡| 久色成人在线| 国产欧美日韩免费| 亚洲自拍电影| 欧美日韩久久| 亚洲精品乱码久久久久久久久 | 亚洲精品一区二区三区婷婷月| 久久电影一区| 国产精品美女主播在线观看纯欲| 亚洲日本va午夜在线电影| 久久网站免费| 激情久久久久久久久久久久久久久久| 亚洲一区二区在线免费观看| 欧美高潮视频| 在线观看视频欧美| 久久女同精品一区二区| 国产一区二区三区四区| 欧美专区第一页| 国产欧美日韩免费看aⅴ视频| 亚洲一级免费视频| 欧美午夜精品| 亚洲专区一区| 国产乱码精品一区二区三区av| 99国产精品一区|