webpack5学习笔记OSCHINA

解决代码拆分问题nodecommonjs模块化

解决浏览器支持问题requirejs

想要主js调用别的js要在主js前引入

hello.jsexporthello()

main.jshello()

importhello.jsimportmain.js

先安装node

然后安装webpackwebpack-cli全局安装(不推荐,会锁定版本)

npminstallwebpackwebpack-cli--global

本地安装

npminitnpminstallwebpackwebpack-cli--save-devcmdcls清屏

webpack打包

webpackwebpack--statsdetailed查看详细打包信息

npx牛逼

webpack--entryxxx

加--modeproduction生产环境

output

webpack.config.js文件

绝对路径使用require(‘path’)

path.resolve(__dirname,'xxx')module.exports={ entry:'', output:{ filename:'', path:'结对路径'' } }自动引入资源插件-html-webpack-pluginnpminstallhtml-webpack-plugin引入

constHtmlWebpackPlugin=require('html-webpack-plugin')在根{}下

plugins:[ newHtmlWebpackPlugin()]配置HtmlWebpackPluginnewHtmlWebpackPlugin({ template:'./index.html',模板文件 filename:'app.html',生成文件名 inject:'body'在哪个标签引入})清理dist(清理旧的打包)在output选项里面

output:{ filename:'', path:'结对路径'', clean:true }搭建开发环境mode选项定位错误更好显示代码定位错误

devtool:'inline-source-map',监听代码变化webpack--watch使用webpack-dev-servernpminstallwebpack-dev-server加-D在本地开发环境运行

在配置文件中

devServer:{ devServer:{ static:'./dist'//注意这里的./dist是路径 }}在控制台webpack-dev-server

module:{ rules:[ { test:/\.png$/, type:'asset/resource' } ] }在js文件中引入

importimgsrcfrom'./assets/img-1.png'constimg=document.createElement('img')创建一个照片元素img.src=imgsrc添加路径document.body.appendChild(img)将照片添加进页面webpack-dev-server--open加–open默认打开

在output中定义导出路径以及名字

output:{ filename:'bundle.js', path:path.resolve(__dirname,'./dist'), clean:true, assetModuleFilename:'images/test.png' },assetModuleFilename:‘images/[contenthash].png’[contenthash]可自动根据hash来生成文件名

assetModuleFilename:‘images/[contenthash][ext]’[contenthash]可自动根据hash来生成文件名以及扩展名

若在modulerulesgenerator配置则generator高于output

使图片变成base64资源

test:/\.svg$/,type:'asset/inline'配置sourcetest:/\.txt$/,type:'asset/source配置assettest:/\.jpg$/,type:'asset'自动选择url还是文件base64一般小于8k会生成base64

可通过追加parser来控制

test:/\.jpg$/,type:'asset',parser:{dataUrlCondition:{maxSize:4*1024//默认大小4*1024}}loader使用安装css-loader以及style-loader执行

npminstallcss-loader-Dnpminstallstyle-loader-D配置

{test:/\.css$/,use:['style-loader','css-loader']}在index.js引入import‘./style.css’

先执行css-loader再执行style-loader

npminstallless-loaderless-D配置

{test:/\.(css|less)$/,use:['style-loader','css-loader','less-loader']}在index.js引入import‘./style.less’

安装插件

npminstallmini-css-extract-plugin-D在webpack.js引入

constMiniCssExtract=require(‘mini-css-extract-plugin’)

在plugins中添加

newMiniCssExtract()

配置

{test:/\.(css|less)$/,use:[MiniCssExtract.loader','css-loader','less-loader']}更换style-loader为MiniCssExtract.loader

style-loader作用是将css连接到页面而为了抽离改为MiniCssExtract.loader

自定义生成的文件名

newMiniCssExtract({filename:‘styles/[contenthash].css’})

npminstallcss-minimizer-webpack-plugin-D引入

constCssMinimizerPlugin=require(‘css-minimizer-webpack-plugin’)

在优化配置中配置

webpack配置根级

optimization:{ minimizer:[ newCssMinimizerPlugin() ]}注意配置此项之后代码压缩会失效需要单独配置terser

且mode更换为生产环境

mode:‘production’,

.block-bg{background-image:url(./assets/webpack-logo.svg)!important;}

!important使优先级最高

配置webpack

{test:/\.(woff|woff2|eot|ttf|otf)$/,type:'asset/resource'}在css文件引入字体文件

@font-face{font-family:'iconfont';src:url('./assets/iconfont.ttf');}.icon{font-family:'iconfont';font-size:30px;}在index.js引入字体

constspan=document.createElement('span')span.classList.add('icon')span.innerHTML=''document.body.appendChild(span)加载数据csv-loaderxml-loader安装

npminstallcsv-loaderxml-loader-D配置

{test:/\.(csv|tsv)$/,usr:'csv-loader'},{test:/\.xml$/,usr:'xml-loader'}引入数据在index.js

importDatafrom'./assets/data.xml'importNotesfrom'./assets/data.csv'xml转成js对象

csv转换为数组

安装

npminstalltomlyamljson5-D配置webpack

consttoml=require('toml')constyaml=require('yaml')constjson5=require('json5'){ test:/\.toml$/, type:'json', parser:{ parse:toml.parse }},{ test:/\.yaml$/, type:'json', parser:{ parse:yaml.parse }},{ test:/\.json5$/, type:'json', parser:{ parse:json5.parse }}使用文件

将es6转化为es5

babel-loader:在webpack解析es6@babel/core:babel核心模块@babel/preset-env:babel预定,一组babel插件的集合

npminstall-Dbabel-loader@babel/core@babel/preset-env配置{test:/.js$/,exclude:/node_modules/,use:{loader:‘babel-loader’,options:{presets:[’@babel/preset-env’]}}}

原因babel生产用于兼容async/await

安装插件@babel/runtime

npminstall@babel/runtime-D安装插件@babel/plugin-transform-runtime

npminstall@babel/plugin-transform-runtime-D配置

{ test:/\.js$/, exclude:/node_modules/, use:{ loader:'babel-loader', options:{ presets:['@babel/preset-env'], plugins:[ ['@babel/plugin-transform-runtime'] ] } }}分离代码如果有多个入口文件

entry:{ index:'./src/index.js', another:'./src/another-module.js'},出口的filename:'[name].bundle.js',但是这样会导致重复打包

entry:{ index:{ import:'./src/index.js', dependOn:'shared' }, another:{ import:'./src/another-module.js', dependOn:'shared' }, shared:'lodash'},方案二配置splitChunksoptimization:{splitChunks:{chunks:‘all’}}

如下

functiongetComponent(){returnimport('lodash').then(({default:_})=>{constelement=document.createElement('div')element.innerHTML=_.join(['hello','webpack'],'')returnelement})}getComponent().then((element)=>{document.body.appendChild(element)})constbutton=document.createElement('button')懒加载button.textContent='点击加法运算'button.addEventListener('click',()=>{import(/*webpackChunkName:'math'*/'./math').then(({add})=>{console.log(add(4,5))})})document.body.appendChild(button)import(/*webpackChunkName:‘math’*/’./math’)魔法注释可以设置打包文件名

prefetch浏览器空闲时加载

import(/*webpackPrefetch:true*/

preload类似懒加载

import(/*webpackPreload:true*/

filename:‘[name].[contenthash].js’,

optimization:{ minimizer:[ newCssMinimizerPlugin() ], splitChunks:{ cacheGroups:{ vendor:{ test:/[\\/]node_modules[\\/]/, name:'vendors', chunks:'all' } } }}js放到一个文件夹output:{filename:‘scripts/[name].[contenthash].js’,…

module.exports=(env)=>{console.log(env)return{webpack配置项可通过env参数配置}}

比如

mode:env.production‘production’:‘development’

webpack--envproduction

可以传参a=1

npminstallterser-webpack-plugin-D使用

optimization:{ minimizer:[ newCssMinimizerPlugin(), newTerserPlugin() ],...拆分配置文件开发环境和生产环境

项目根目录新建webpack.config.dev.js开发环境

修改mode为开发环境

去掉压缩代码以及公共路径或包括缓存

启动

webpack-c./config/webpack.config.dev.js

-c可用-config替换

注意生成的文件的路径

在config目录下新建webpack.config.prod.js文件

修改mode为生产环境

删除调试devtooldev-server

webpack-c./config/webpack.config.prod.js

可通过webpackserve-c./config/webpack.config.dev.js

在项目根目录下package.json

{"scripts":{"start":"npxwebpackserver-c./config/webpack.config.dev.js","build":"npxwebpack-c./config/webpack.config.prod.js"}}忽略性能优化提示在webpack配置根{}下

performance:{hints:false}

项目根目录创建webpack.config.common.js文件

去除掉devprod中相同配置

npminstallwebpack-merge-Dconfig目录下创建wenpacj.config.js

const{merge}=require('webpack-merge')constcommonConfig=require('./webpack.config.common')constproductionConfig=require('./webpack.config.prod')constdevelopmentConfig=require('./webpack.config.dev')module.exports=(env)=>{switch(true){//可定义key-value判断caseenv.development:returnmerge(commonConfig,developmentConfig)caseenv.production:returnmerge(commonConfig,productionConfig)default:returnnewError('Nomatchingconfigurationwasfound')}}source-map新建目录npminit初始化

安装npminstallwebpackwebpack-cliwebpack-dev-serverhtml-webpack-plugin-D

默认devtool为eval

会生产main.js.map且生产的main.js注释里会显示sourceUrlmain.js.map(显示行列)且关联能找到代码问题

会生产main.js.map且生产的main.js注释里不会显示sourceUrlmain.js.map且不关联不能直接找到代码问题

不会生产main.js.map但生产的main.js注释里会显示sourceUrlmain.js.map且关联能找到代码问题

不会生成sourcemap文件而是放到了eval后面能找到代码问题

生成map文件mappings带有行数不带列能找到代码问题

生成map文件mappings带有行数不带列带有module的能找到代码问题

devServer:{hot:true}修改js热更新

在app.js

if(module.hot){module.hot.accept('./input.js',()=>{})}热加载devServer:{liveReload:true}代码规范eslint安装npmieslint-Deslint./src项目使用constHtmlWebpackPlugin=require('html-webpack-plugin')module.exports={mode:'development',entry:'./src/app.js',module:{rules:[{test:/\.js$/,usr:['babel-loader','eslint-loader']//先eslint-loader'},],},plugins:[newHtmlWebpackPlugin()]};开启后可关闭报错

devServer:{client:{overlay:false//报错覆盖层}}Githooks–Husky目的提交之前检测代码

.git/hooks/pre-commit文件

文件内容

eslint./src或者npxeslint./src自定义新建目录.mygithooks

文件.mygithooks/pre-commit内容一样

git配置

gitconfigcore.hooksPath.mygithoosk

npmhuskyinstall-Dhuxkyinstallpackage.json"main":"index.js","scripts":{"prepare":"huskyinstall"},在./husky目录下新增pre-commit文件

记得给予pre-commit文件权限(+x)

写入npxeslint.src

执行

gitadd.

gitcommit-m‘xxx’

如果代码出错会提示

解析绝对目录

用@指向src

webpack.js

resolve:{alias:{'@':path.resolve(__dirname,'./src')}}优先级配置默认js>json配置

resolve:{alias:{'@':path.resolve(__dirname,'./src')},extensions:['.json','.js','vue']}配置外部资源引入(链接引入)方式一wepack配置文件

externals:{jquery:'jQuery'}在html模板文件里面加入

npmiwebpack-bundle-analyzer-D引入

const{BundleAnalyzerPlugin}=require('webpack-bundle-analyzer')plugins:[newBundleAnalyzerPlugin()]启动webpackserve就会弹出

npmipostcss-loader-D

npmiautoprefixer-D

module:{rules:[{test:/\.css$/,use:['style-loader','css-loader','postcss-loader']}]}配置postcss.config.js在根目录下创建文件

module.exports={plugins:[require('autoprefixer')]}使用在package.json目录下根{}

"browserslist":[">1%",//全球浏览器使用率要大于1%"last2versions"//每个浏览器的最近两个版本]插件postcss-nested支持比如body下包括div的这种

npmipostcss-nested-D

配置postcss.config.js

module.exports={plugins:[require('autoprefixer'),require('postcss-nested')]}开启css模块化

use:['style-loader',{loader:'css-loader',options:{modules:true//开启css模块化}},'postcss-loader'],exclude:[path.resolve(__dirname,'..','node_modules')]//排除外部modules可设置两个配置一个全局一个局部

如下在webpack配置

全局配置

{test:newRegExp(`^(!.*\\.global).*\\css`),use:['style-loader',{loader:'css-loader',options:{modules:true//开启css模块化}},'postcss-loader'],exclude:[path.resolve(__dirname,'..','node_modules')]//排除外部modules}局部配置

{test:newRegExp(`^(.*\\.global).*\\css`),use:[{loader:'style-loader'},{loader:'css-loader'},{loader:'postcss-loader'}],exclude:[path.resolve(__dirname,'..','node_modules')]//排除外部modules}WebWorks创建一个workerconstworker=newWorker(newURL(’./work.js’,import.meta.url))

接收主线程信息self.onmessage=()=>{

}

主线程接收信息worker.onmessage=(message)=>{console.log(message)}

向主线程发送信息self.postMessage({answer:1111})

主线程发送信息worker.postMessage({question:‘hi,那边的worker线程,请告诉我今天的幸运数字是多少?’})

npmitypescriptts-loader-D配置webpack

constHtmlWebpackPlugin=require('html-webpack-plugin')constpath=require('path')module.exports={mode:'development',entry:'./src/app.ts',devtool:'inline-source-map',module:{rules:[{test:/\.ts$/,use:'ts-loader',exclude:/node_modules/}]},resolve:{extensions:['.ts','.js']//设置优先ts扩展名},output:{filename:'bundle.js',path:path.resolve(__dirname,'./dist')},plugins:[newHtmlWebpackPlugin()]}初始化ts配置文件

tsc--init修改ts配置

rootDir:“./src”

outDir:“./dist”

ts使用模块

查询需求模块安装

entry:['./src/app.js','./src/app2.js']配置二//entry:[//'./src/app.js',//'./src/app2.js',//'lodash'//],entry:{main:['./src/app2.js','./src/app.js'],lodash:'lodash'},配置三entry:{main:{import:['./src/app2.js','./src/app.js'],dependOn:'lodash'//依赖},lodash:'lodash'},index.html模板配置配置一基础配置webpack

es2015特性

但是无法额外模块

constHtmlWebpackPlugin=require('html-webpack-plugin')module.exports={mode:'production',entry:'./src/app.js',plugins:[newHtmlWebpackPlugin()],optimization:{usedExports:true//此处开启}}配置二sideEffects在packages.json配置

{"sideEffects":true,//true都加载false都不加载"sideEffects":["*.css"],//对于所有的css文件都加载,其它不加载"sideEffects":["*.css","*.global.js"],//对于所有的css文件以及.global.js文件都加载,其它不加载}离线环境下运行非离线环境下运行打包完成

devServer:{devMiddleware:{writeToDisk:true}}添加workbox实现pwa安装

npmiworkbox-webpack-plugin-D配置

constHtmlWebpackPlugin=require('html-webpack-plugin')constWorkboxPlugin=require('workbox-webpack-plugin')module.exports={mode:'production',entry:'./src/app.js',plugins:[newHtmlWebpackPlugin(),newWorkboxPlugin.GenerateSW({clientsClaim:true,skipWaiting:true})],浏览器注册入口文件app.js

if('serviceWorker'innavigator){//浏览器是否支持window.addEventListener('load',()=>{navigator.serviceWorker.register('/service-worker.js').then(registration=>{console.log("SW注册成功")console.log(registration)}).catch(registrationError=>{console.log("SW注册失败",registrationError)})})}shimming全局变量webpack配置

constHtmlWebpackPlugin=require('html-webpack-plugin')constwebpack=require('webpack')module.exports={mode:'development',entry:'./src/index.js',plugins:[newHtmlWebpackPlugin(),newwebpack.ProvidePlugin({_:'lodash'})]}使用index.js

//import_from'lodash'//无需引入console.log(_.join(['hello','webpack'],''))细颗粒度shimmingthis问题imports-loader安装

npmiimports-loader-D配置webpack

constHtmlWebpackPlugin=require('html-webpack-plugin')constwebpack=require('webpack')module.exports={mode:'development',entry:'./src/index.js',plugins:[newHtmlWebpackPlugin(),newwebpack.ProvidePlugin({_:'lodash'})],module:{rules:[{test:require.resolve('./src/index.js'),use:'imports-loaderwrapper=window'//让包里的this指向window}]}}全局exports插件exports-loader

npmiexports-loader-D使用webpack配置

module:{rules:[{test:require.resolve('./src/index.js'),use:'imports-loaderwrapper=window'},{test:require.resolve('./src/global.js'),use:'exports-loadertype=commonjs&exports=file,multiple|helpers.parse|parse'//相当于暴露parse:helper.parse}]}polyfills垫片简单原理不能这样引入

安装@babel/polyfill

npmi@babel/polyfill-Dimport'@babel/polyfill'//垫片这样导入Xconsole.log(Array.from([1,2,3],x=>x+x))进一步优化安装babel环境

npmibabel-loader@babel/core@babel/preset-env-D配置webpack

constHtmlWebpackPlugin=require('html-webpack-plugin')module.exports={mode:'development',entry:'./src/index.js',module:{rules:[{test:/\.js$/,exclude:/node_modules/,use:{loader:'babel-loader',options:{presets:[['@babel/preset-env',{targets:['last1version',//浏览器最新的一个版本'>1%'//代码使用超过1%],useBuiltIns:'usage',corejs:3}]]}}}]}}额外安装

npminstall--savecore-js@3library打包配置为不同模块constpath=require('path')module.exports={mode:'production',entry:'./src/index.js',experiments:{outputModule:true//module时候开启此配置},output:{path:path.resolve(__dirname,'dist'),filename:'mylib.js',library:{//name:'mylib',//module时候取消此配置type:'module'//window/commonjs/module}}}打包为通用模块constpath=require('path')module.exports={mode:'production',entry:'./src/index.js',//experiments:{//outputModule:true//module时候开启此配置//},output:{path:path.resolve(__dirname,'dist'),filename:'mylib.js',library:{//name:'mylib',//module时候取消此配置type:'umd'//window/commonjs/module/umd},globalObject:'globalThis'//全局this代替self}}构建小轮子配置

constpath=require('path')module.exports={mode:'production',entry:'./src/index.js',output:{path:path.resolve(__dirname,'dist'),filename:'webpack-numbers.js',library:{name:'webpackNumbers',type:'umd'},globalObject:'globalThis'},externals:{//优化依赖lodash:{commonjs:'lodash',commonjs2:'lodash',amd:'lodash',root:'_'}}}发布为npm-package执行

npmconfiggetregistry

确保为

npmadduser添加用户

npmpublish发布

使用webpack的ModuleFederationPlugin

先准备好两个模块

组件jsHeader.js

constHeader=()=>{constheader=document.createElement('h1')header.textContent='公共头部内容'returnheader}exportdefaultHeaderwebpack配置项

constHtmlWebpackPlugin=require('html-webpack-plugin')const{ModuleFederationPlugin}=require('webpack').containermodule.exports={mode:'production',entry:'./src/index.js',plugins:[newHtmlWebpackPlugin(),newModuleFederationPlugin({name:'nav',//模块名filename:'remoteEntry.js',//模块文件名remotes:{},//引入的模块exposes:{//导出的模块'./Header':'./src/Header.js'//模块路径},shared:{}//共享包})]}模块home引入navwebpack配置项

异步加载

importHomeListfrom"./HomeList";import('nav/Header').then((Header)=>{constbody=document.createElement('div')body.appendChild(Header.default())document.body.appendChild(body)document.body.innerHTML+=HomeList(5)})模块search引入两个资源暴露home的homeList组件

Promise.all([import('nav/Header'),import('home/HomeList')]).then(([{default:Header},{default:HomeList}])=>{document.body.appendChild(Header())document.body.innerHTML+=HomeList(3)})Promise.all()可执行多个异步

webpack以及nodejs最新版本

内置优化

解析必要的提高打包速度

{test:/\.js$/,include:'xxxxxx',loader:'xxx'}能不用loader和plugin就不用引导解析减少resolve,modules,resolve.extensions,resolve.mainFiles,resolve.descriptionFiles中的条目数量来减少系统文件调用次数

如果不使用symlinks设置resolve.symlinks:false

如果自定义resolveplugin规则并且没有指定context,可以设置resolve.cacheWithContext:false

使用更少或者更小的library

在多页面应用使用splitChunksPlugin并且开启async

移除未引用代码

只编译当前正在开发的代码

在webpack配置中使用cache选项使用package.json中的“postinstall”清除缓存目录

将cache类型设置为内存或者文件系统memory选项很简单它告诉webpack在内存中存储缓存

cache:{type:‘memory’}

对它们概要分析以免在此处引入性能问题

constpath=require('path')constwebpack=require('webpack')module.exports={mode:'production',entry:{jquery:['jquery']},output:{filename:'[name].js',path:path.resolve(__dirname,'dll'),library:'[name]_[hash]'},plugins:[newwebpack.DllPlugin({name:'[name]_[hash]',path:path.resolve(__dirname,'dll/manifest.json')})]}引入constHtmlWebpackPlugin=require('html-webpack-plugin')constwebpack=require('webpack')constpath=require('path')module.exports={mode:'production',entry:'./src/index.js',plugins:[newHtmlWebpackPlugin(),newwebpack.DllReferencePlugin({manifest:path.resolve(__dirname,'./dll/manifest.json')})]}此时并不能使用

constHtmlWebpackPlugin=require('html-webpack-plugin')constwebpack=require('webpack')constpath=require('path')constAddAssetHtmlPlugin=require('add-asset-html-webpack-plugin')module.exports={mode:'production',entry:'./src/index.js',plugins:[newHtmlWebpackPlugin(),newwebpack.DllReferencePlugin({manifest:path.resolve(__dirname,'./dll/manifest.json')}),newAddAssetHtmlPlugin({filePath:path.resolve(__dirname,'./dll/jquery.js'),publicPath:'./'})]}workerpool注意多个loader从下到上运行

使用thread-loader

用于非常耗时的loader

因为worker也会消耗资源

//constHtmlWebpackPlugin=require('html-webpack-plugin')module.exports={mode:'development',entry:'./src/index.js',module:{rules:[{test:/\.js$/,exclude:/node_modules/,use:[{loader:'babel-loader',options:{presets:['@babel/preset-env']}},{loader:'thread-loader',options:{workers:2}}]}]}}开发环境提升构建性能使用webpack的watchmode监听过多导致的cpu负载

webpack-dev-server

webpack-hot-middleware

webpack-dev-middleware

eval性能最好但无法转译

cheap-source-map稍差的map但性能不错

eval-source-map增量编译

多数情况为eval-cheap-module-source-map

TerserPlugin压缩和混淆

[fullhash]/[chunkhasn]/[contenthash]

AggressiveSplittingPlugin

AggressiveMergingPlugin

ModuleConcatenationPlugin

optimization:{runtimeChunk:true}

optimization:{removeAvailableModules:false,removeEmptyChunks:false,splitChunks:false}

THE END
1.用户登录ZDACLOUD ZDa ZdaCloudhttps://mynet.bfsu.edu.cn/
2.首页资源中心教师发展会议活动学术科研学生发展考试测评新标准系列 贯穿小学、初中、高中的"一条龙"英语课标教材 Join In 系列 适用于小学1—2年级的英语预备级教材 新视角系列 外研社全新打造,覆盖小初学段的英语课标教材 拓展教材 新拓展系列 与剑桥大学出版社合作出版的国际化英语拓展教程 剑桥系列 与剑桥大学出版社合作出版的国际化英语拓展教程 https://www.unischool.cn/?tid=7
3.ChromeApp–myONOverview You can download a free myON app for myON from the Chrome store. Simply do one of the following on a Chromebook: Go tohttps://help2.renaissance.com/myON/ChromeApp
4.ZLibrary:最新可用官网及镜像入口网址(持续更新)zlibrary镜像网址3:https://international.cn.eu.org/ zlibrary打不开解决办法:ZLibrary入口网站(持续更新) Z-Library最新官网入口 zlibrary官网入口1:https://zh.z-library.sk (需梯) zlibrary官网入口2:https://zh.z-lib.gd/ (需梯) zlibrary官网入口3:https://zh.z-lib.gs/ (需梯)https://blog.csdn.net/2409_89146448/article/details/144427048
5.海棠文化线上文学城登录网址是多少最新网址分享汇总海棠文化线上文学城七站(限):http://www.myhtebook.com/ 海棠七站(安全连线)(限):https://www.myhtebook.com/ 海棠文化线上文学城八站(限):https://www.lovehtbooks.com/ 海棠八站(安全连线)(限):https://www.lovehtbooks.com/ 海棠文化线上文学城九站(限):http://www.myhtebooks.com/ http://www.bitark.info/btkgl/56567.html
6.登录?站点进入网站专属简体中文 8555.59M详情 游戏截图 1/3 2/3 3/3 游戏简介 昨天刘雁宇受伤之后,看样子他的问题不是很大,无奈的是,今天已经公布刘雁宇提前回到沈阳,这就意味着他的伤势还是比较严重的。 甚至有球迷公布了刘雁宇在机场的照片,他走路还是一瘸一拐的,整体的速度非常慢。按照这样的趋势来看,刘雁宇肯定要缺席一段时间了。http://m.inakoa.net/20241216/7885537243.html
7.登录?站点?♀?进入网站专属简体中文 3.48M详情 游戏截图 1/3 2/3 3/3 游戏简介 北京时间12月12号广东和北京的常规赛,这场比赛备受大家关注。不过广东在攻守的发挥都非常好,这也让他们可以开局就保持领先,第二节还是可以持续拉开分差,最终半场61-40大胜北京。 这场徐杰和双外还是可以主导局势。特别是徐杰这个点,他已经展现了一个小外的http://m.lzahs.com/ZQQ/moa/xEy.html
8.登录?专属国际网站进入全民娱乐注册平台登录,优博平台官网登录,哪个银行开户比较容易,beplay体育下载苹果版,天博官方体育app下载TT最新网址,澳门mgm集团网址,易发网,彩神welcome登录,yifa彩票下载网址足球图片,银河国际官方网站入口,澳门赌城亚洲真人,ysb易胜博,艾弗森ballbetbeplay体育中国官网,澳门利澳在线登录,时彩网,BOB·体育官网入口,一分炸http://m.laiguzi.com/20241215/6148947919.html
9.登录?专属国际网站进入快3守号和值,猫咪大作战台服下载,乐乐捕鱼vip9,丽星菅官网网站,美高梅入口网址快三平台官网登陆,利博娱乐有多少人被黑,明星体育品牌,老版本850棋牌,乐游棋牌娱乐乐鱼竞彩,内幕玄机报,免费网络游戏,老杨说彩,快乐8第2021097米兜彩票优惠活动,凯时登录正规网站,快乐扑克3开奖结果,老友福建麻将辅助,美国on3体育莫娱,http://m.xiaoxiangjiaoyu.com/YZE/moa/LOAJEHkw.html
10.登录?站点?♀?进入网站专属使用语言:中文 :需要联网 系统要求:7.6以上 应用介绍 澳门金沙下载手机版ag亚游官网登录ag平台能套利吗,波克捕鱼应用宝,bob体彩下下载,利来国际网上娱乐,tvt体育官方入口ag体育全新官网,yt3tv樱桃短视频,澳门彩库app下载i,wbg冠军,棋牌软件best365手机版官方网站,爱趣游戏兑换码,澳门皇冠手机游戏网子,BB贝博平台登录http://m.pkadaa.com/JKP/cod/PUnYHuKVKl.html
11.统一身份认证Language: 简体中文English 账号登录 一周内免登录 登录 忘记密码?http://erp.qfzyyxx.com/
12.myON线上图书馆登录网址变更近期收到很多家长反馈myON点击“登录”按钮没有反应。因为myON线上图书馆在近期变更了网址,原网址是https://www.myonchina.cn/index.html,现在变更为:https://www.myonlibrary.cn/index.html。 在myON登录网站上也有提示,见下图。在官方网址变更后,我们的《myON使用指南》中也做了说明。http://www.yingyujiaoyu.cn/?p=1189
13.library.skshu.com/yyys/99762645.shtml国产又大又黄视频 七天高端外中文字幕淫围AB 美女奶头久久精品 艳妇乳肉豪妇乳荡 男子脱得精光Gaychina 天天日天天干干 jomiconic2 国产黄色A级 奶头软件漫画网站 黄色一级免费 1024手机免费在线你懂的 糖心logo入口官网 又黄又硬又粗又大在线观看 老熟妇中国插插 美国一次啦AV在线播放 WWW,17c,com http://library.skshu.com/yyys/99762645.shtml
14.AndroidPlatform3.0SDK和EclipseADT安装记录二十五、用CDT Indigo SR2创建main入口c工程 十六、Error generating final archive: Debug Certificate expired on 的错误(转) 十七、刷新avd列表(重启adb服务器) 十八、查看内存占用量(检查内存泄露) 十九、打开活动时关闭IME 二十、Eclipse ADT出现ADB server didn't ACK错误 https://www.iteye.com/blog/weimingtom-1202253
15.草莓视频app网址入口丨亚洲综合久久精品无码桃花丨中文字幕一区二www.0213556.cn草莓视频app网址入口,亚洲综合久久精品无码桃花,中文字幕一区二区人妻在,亚洲欧美精品综合久久99,中文字幕乱倫视频,国产粉嫩粉嫩的18在线观看,国产a级毛片久久久久久精品,欧美日韩高清国产AⅤ一区http://www.0213556.cn/
16.如何安装mysqlplugin:Can'topensharedlibrary'libmemcachedplugin_name 是在plugin声明中定义的plugin的名称,plugin名字大小写敏感可以由系统设置。plugin_library 是共享库的名字,共享库在 plugin的目录下,可能是静态或者动态库,比如:libmyplugin.so or libmyplugin.dylib 共享库必须放在plugin目录下,目录是由plugin_dir系统变量中定义的,默认这个目录是由配置变量中的pkglibdihttp://jackxiang.com/post/4000/
17.免费福利人妻系列中文字幕无码专区国产各种高潮合集在线观看 - 黄色免费大片 - 一区二区三区无码视频免费福利 - 人妻系列中文字幕无码专区 - 香蕉菠萝蜜视频在线入口 WWW.CB448.COM www.gjgwy.org 565mm.com 0ADY.NET rrr521.com 168DY.CC www.538porn.com 色就是色SE94. 色中色ip www.gaoav.con www.17cpom RRR17.COM tokyo hot http://www.cdfyys.cn/
18.成年免费视频黄网站在线观看久久精品思思中文字幕www.law110.cn成年免费视频黄网站在线观看,久久精品思思中文字幕,高清黄色不卡乱论大片,91免费日本黄色电影,国内精品91久久久久,国内精品久久99人妻无码,免费好看的国产精品,国产第一页院浮力地址http://www.law110.cn/
19.亚洲R成人AV久久人人爽巨茎中出肉欲人妻在线视频PRUBURB官方网站入口链接 www.kaspersky.com.cn 969wyt 思雨电影网 909se.com www.8888se WWW.CABPwww.001my.com www.111su.com www.htky365.com WWW.39HHH.COM WWW.8090BBB.COM loosie系列 WWWxl上司带翻译中文 www.tude youjizz.on www3.jjj 幼嫩影院 844jj facebowl.com WWW.61255.COM http://huayuglasscup.cn/
20.亚洲第一女人精品网第1页国产日韩精品中文字无码yijiazb.cn亚洲第一女人精品网第1页,国产日韩精品中文字无码,欧美三级欧美做a爱,国产黄色三级片免费在线观看,爽爽婬人综合网网站,美女性生活视频啪啪网站,天天躁日日躁狠狠躁免费麻豆,日本护士视频亚洲性在线看http://yijiazb.cn/
21.WWW.746TV,COMWWW746TVCOM34ZZZ5060WJAVLIBRARY最新地址呀TTQSW,COM 888300,COM PLUS2814YYYK25,COM 3040LU,COM 色五五月俺也去WWW,8X8X,BH,C射精网站综艺HTTPS://666LU,VIPHTTPS://666LUVIPWWW,27XN,COM WWW74EEECOM A18888.COM WWW,2IIII,INFOWWW,551XX,COM WWW,M6SK,COM WWW.195666.COM WWW,SFSNT,COM WWW,AVTB01,ONMhttp://q739.cn/
22.HomeTaylor'sLibraryAn accreditation visit has been scheduled for the Diploma in Early Childhood Education programme on October 28, 2024, at our library. The auditors… News & Events Oct23 2024 Accreditation Visit for Bachelor of Accounting (Fintech) (Honours) programme https://taylorslibrary.taylors.edu.my/
23.最新入口WWW.MAX58,COM最新入口-WWW.MAX58,COM_WWWMAX58COM,免費韓國電影為您提供最新最全的高清電影,支持免費在線觀看和下載。最新高清熱門電影、電視劇 韓國、動漫、和日本電影,每日更新HD免費!http://kont.mrshr.cn/
24.高清入口WWW.TTT539,COM本站為您提供,高清入口-WWW.TTT539,COM_WWWTTT539COM,無需下載手機在線觀看,全網國産、日韓、歐美、各類影視全部免費觀看!http://ouz.hengxindianqiwx.cn/
25.国产精品美女久久久网AV国产黄色视频网站日本一区二区三区中文国产精品美女久久久网AV|国产黄色视频网站|日本一区二区三区|中文字幕亚洲精品第十页 www.miya792.com www.av555 www.36com 1122晗果影院 www.5555av.com www.gegeri.com www99re最新地址获取 www.95169.com 右手影院网.www www.79 www.97049.com www.cq528.info 快播电影免费网站 www.124dy.com www.http://www.jlxyzs.com.cn/
26.久久综合国产乱子伦精品免费久久无码中文字幕无码7080tv电影网青鸟影视官网在线观看 ggg46 h动漫迅雷种子苍井优 快播 ctn29 yw193.尤物在线影院入口on.net 26uuu打不开 www.mfavw.org WWW.2KK.CC WWW.NM23.COM ww.51v6.COM 345999.COM sdjszghttp://www.bvahydraulics.cn/
27.精品少妇一区二区三区在线一级A片久久久久久久久成人亚洲A片V一区二区中出片 - 一级特黄录像绵费播放 - 精品少妇一区二区三区在线 - 一级A片久久久久久久久 - 中文字幕高清免费日韩视频在线http://www.114tvgou.cn/
28.创世番茄中文影院创世番茄中文影视meyd57538fafamxgs020sfwj5o8 gg51-lzac189 vip91 kp00iucommao010 mao011prowelcome on miyavi43ckckmyg66t8n6丨丨x区入口yyybbb25000buz湿吻,5252se comvip5840maoawntdmzx522uusgsps151http://www.cssds.cn/
29.亚欧色视频在线观看免费国产精品美女流白浆视频COM_WWW567GANCOM XIXIRENTI.NET爱屋 WW.26KDW.COM_WW26KDWCOM WWWWWWXINJIZZYOU YES58MY77722444COM WWW456YY?ON 91精品啪在线观看国产第一 WWW.YOUJIZZ66 HTTPS://MAIL,SINOPEC,COM WWW,52http://www.ideally.cn/
30.《www5178caocomsnh48欧美大片免费红杏成年人进入入口www91ss40别名: 《www5178caocomsnh48欧美大片免费|红杏成年人进入入口www91ss40xyz|www271hhcom520免费操必网|794f,今天高清视频在线观看|吴梦梦孟若羽www4388》-专享电影视频传媒影视导航网站动态漫画·总有妖怪想害朕 第2季 地区:中国澳门类型:韩国剧上映时间:2013 https://www.sdkyxy.cn/html/04f399691.html
31.精品女同一区二区三区免费播放大順公司旗下的公司具有多方面的服務功能,整合起來,能為客戶提供外貿進出口代理、國際貨運進出口代理、報關報檢代理、倉儲配送等完整的全鏈條的國際物流服務。http://www.zjlgf.cn/
32.精品免费视频伊人精品久久久大香线蕉363电影网国产在线看老王影院入口2021 desi lydic 小青梅1V.1H sao.com woyaocao www.644.cc 好色.xxcc WWW.592 COM.ABATE.CENSOR go2map WWW.6BB.COM 703HH.COM yy77gg xxx.com日本 90DYW1 DJ024.COM BLBOYS www.csoly.com 456767.COM www.gagafa.com WWW.97.CON WWW.MYCOULD.COM www.re242.cn http://www.meirenmian.cn/
33.首页MyQMULThe Online Learning Environment for Queen Mary University of London. Log inhttps://qmplus.qmul.ac.uk/
34.在线中文字幕6页人碰人摸人爱免费视频在线观看亚洲A∨无码一区MY1152,COM WWW,73BO,COM WWW,FFF16,COM 720LU,COM在线视频 99KKK WWW,999KBKB,COM JJ11JJ,COM WWW,SESE4567,COM 778AA,COM WWW,78XO,COM WWW,432WYT,COM SAO92,COM WWW,44TQ,COM 81CAO,COM 9999PPPP 40KXW,COM WWW,EE33EE,COM WYT750,COM WWW,HAOLE003,COM WWW18DDD,COM WWW,NCEHOME,COM 45http://www.bjwi.cn/