搜索引擎优化(SEO)

搞懂SEO,让您的网站订单接不完!

电话/微信:18221559551
首页 > 知识&问答

用html table theadk从零开始的html border-radius-cli搭建'生活'

发布时间:2024-10-23 15:26:01 / 浏览量:

html table theadk从零开始的html border-radius-cli搭建'生活'

有了html border-radius-cli的帮助,我们创建html border-radius的项目非常的方便,使用html border-radiuscreate然后选择些需要的配置项就能自动帮我们创建配置好的html table theadk项目脚手架了,实在是‘居家旅行’必备良药。这次借着学习html table theadk的机会,不用html border-radius-cli搭建一个html border-radius项目。

注:基于html table theadk5,其运行于Node.jsv10.13.0+的版本。

完整代码:https://html border-radius.com/mashiro-cat/learn_html table theadk

html table theadk基础

html table theadk官网:https://html table theadk.js.org/

html table theadk中文官网:https://html table theadk.docschina.org/

安装:

npmihtml table theadkhtml table theadk-cli-D

运行:

npxhtml table theadk./src/main.js--mode=development

#根目录有配置文件

npxhtml table theadk

打开文档就能看到五个核心配置点:

入口(entry)

输出(output)

html border-radius

插件(plugin)

模式(mode)

html table theadk本身只提供了对js中ESModule和压缩的支持,很多功能都要通过使用html border-radius或者plugin拓展。

html table theadk.config.js配置文件编写:

module.exports={

//入口多入口则配置成对象形式

entry:"",

//输出需使用绝对路径

output:{},

//html border-radius

module:{

rules:[]

},

//插件

plugins:[],

//development或者production

//生产模式默认开启js和html压缩

mode:"development"

}

样式资源处理

配置资源输出的路径和名称

输出:

output:{

path:path.resolve(__dirname,'dist'),

filename:'static/js/main.js'//将js输出到static/js目录中

}

module中:

generator:{

//将图片文件输出到static/imgs目录中

//将图片文件命名[hash:8][ext][query]

//[hash:8]:hash值取8位直接[hash]则不截取

//[ext]:使用之前的文件扩展名

//[name]:会使用之前的名字

//[query]:添加之前的query参数

filename:"static/imgs/[hash:8][ext][query]",

},

css处理

安装两个html border-radius,其使用顺序是css-html border-radius会处理css,而将编译的css经style-html border-radius后会动态创建style标签。

css-html border-radius

#安装

npmicss-html border-radiusstyle-html border-radius-D

rules:[

//两个html border-radius顺序按此它会先使用后面的

{test:/\.css$/i,use:["style-html border-radius","css-html border-radius"]}

]

提取css到单独文件

现在是css全部是打包到js中,然后动态插入的。若需要提取到单独文件,则可以借助插件。

//安装插件

npmimini-css-extract-plugin-D

//配置插件

constMiniCssExtractPlugin=require("mini-css-extract-plugin");

//将styel-html border-radius改为MiniCssExtractPlugin.html border-radius

{

//用来匹配.css结尾的文件

test:/\.css$/,

//use数组里面html border-radius执行顺序是从右到左

use:[MiniCssExtractPlugin.html border-radius,"css-html border-radius"],

},

plugins:[

newMiniCssExtractPlugin({

//定义输出文件名和目录

filename:"static/css/main.css",

}),

]

css兼容处理

//安装

npmipostcss-html border-radiuspostcsspostcss-preset-env-D

//配置

{

//用来匹配.css结尾的文件

test:/\.css$/,

//use数组里面html border-radius执行顺序是从右到左

use:[

MiniCssExtractPlugin.html border-radius,

"css-html border-radius",

{//在css-html border-radius之后,预处理器html border-radius之前

html border-radius:"postcss-html border-radius",

options:{

postcssOptions:{

plugins:[

"postcss-preset-env",//能解决大多数样式兼容性问题

],

},

},

},

],

},

控制兼容性:

package.json文件中添加browserslist来控制样式的兼容性的程度:

{

//其他省略

//"browserslist":["ie>=8"]

//实际开发中我们一般不考虑旧版本浏览器了,所以我们可以这样设置:

//所有浏览器的最新两个版本支持市面上99%浏览器还没死的浏览器

"browserslist":["last2version",">1%","notdead"]

}

css压缩

安装插件:

npmicss-minimizer-html table theadk-plugin-D

html table theadk配置:

constCssMinimizerPlugin=require("css-minimizer-html table theadk-plugin");

plugins:[

//css压缩

newCssMinimizerPlugin(),

]

预处理器

使用less,scss等预处理都要安装对应的html border-radius进行编译,html table theadk才能识别处理。

less的使用:

//安装less-html border-radius

npmiless-html border-radius-D

//配置

//less-html border-radius将less转为css后还是要交给css-html border-radius处理的

{

test:/\.less$/,

use:["style-html border-radius","css-html border-radius","less-html border-radius"]

}

scss,sass的使用:

//安装

npmisass-html border-radiussass-D

//配置

{

test:/\.s[ac]ss$/,

use:["style-html border-radius","css-html border-radius","sass-html border-radius"],

},

点击查看完整配置

图片资源处理

html table theadk4使用file-html border-radius和url-html border-radius处理图片资源,而html table theadk5将那俩都内置了,直接配置开启就可。

{

test:/\.(png|jpe?g|gif|webp)$/,

type:"asset",

},

将小于某个大小的图片转化成Base64可添加此配置:

{

test:/\.(png|jpe?g|gif|webp)$/,

type:"asset",

parser:{

dataUrlCondition:{

maxSize:10*1024//小于10kb的图片会被base64处理

}

}

},

点击查看完整配置

其它资源处理

若项目中引用了字体,视频等资源,则是希望不要处理它,直接输出就好了。配置为type:"asset/resource"它就会原封不动的输出了。

{

//处理字体图标或者视频等其它资源

test:/\.(ttf|woff2?|map4|map3)$/,

type:"asset/resource",

generator:{

filename:"static/media/[hash:8][ext][query]",

},

}

点击查看完整配置

js资源处理

代码质量检测Eslint

安装:

npmieslint-html table theadk-plugineslint-D

在html table theadk配置中使用eslint插件

constESLinthtml table theadkPlugin=require("eslint-html table theadk-plugin");

plugins:[

newESLinthtml table theadkPlugin({

//指定检查文件的根目录

context:path.resolve(__dirname,"src"),

}),

],

编写配置:

配置文件由很多种写法:.eslintrc.*:新建文件,位于项目根目录

.eslintrc

.eslintrc.js

.eslintrc.json

区别在于配置格式不一样package.json中eslintConfig:不需要创建文件,在原有文件基础上写,ESLint会查找和自动读取它们,所以以上配置文件只需要存在一个即可

根目录创建.eslintrc.js配置文件

//.eslintrc.js

module.exports={

//解析配置项

parserOptions:{

ecmaVersion:6,//ES语法版本

sourceType:"module",//ES模块化

},

env:{

node:true,//启用node中全局变量

browser:true,//启用浏览器中全局变量不开启则像consoleMath等全局变量无法使用

},

//继承规则

extends:['eslint:recommended'],

//检测规则

//自定义的规则会覆盖继承的规则

//"off"或0-关闭规则

//"warn"或1-开启规则,使用警告级别的错误:warn(不会导致程序退出)

//"error"或2-开启规则,使用错误级别的错误:error(当被触发的时候,程序会退出)

rules:{

semi:"off",//禁止使用分号

'array-callback-return':'warn',//强制数组方法的回调函数中有return语句,否则警告

'default-case':[

'warn',//要求switch语句中有default分支,否则警告

{commentPattern:'^nodefault$'}//允许在最后注释nodefault,就不会有警告了

],

eqeqeq:[

'warn',//强制使用===和!==,否则警告

'smart'//https://eslint.bootcss.com/docs/rules/eqeqeq#smart除了少数情况下不会有警告

],

},

}

babel兼容处理

安装:

npmibabel-html border-radius@babel/core@babel/preset-env-D

babel配置编写:

配置文件由很多种写法:

babel.config.*:新建文件,位于项目根目录

babel.config.js

babel.config.json

.babelrc.*:新建文件,位于项目根目录

.babelrc

.babelrc.js

.babelrc.json

package.json中babel:不需要创建文件,在原有文件基础上写

presets预设:

简单理解:就是一组Babel插件,扩展Babel功能

@babel/preset-env:一个智能预设,允许您使用最新的JavaScript。

@babel/preset-react:一个用来编译Reactjsx语法的预设

@babel/preset-typescript:一个用来编译TypeScript语法的预设

//创建.babelrc.js

module.exports={

presets:["@babel/preset-env"],

};

html table theadk增加babel

{

test:/\.js$/,

exclude:/node_modules/,//排除node_modules代码不编译

html border-radius:"babel-html border-radius",

},

html自动导入处理

安装html-html table theadk-plugin

npmihtml-html table theadk-plugin-D

html table theadk配置,配置好后就会自动的引入所需的js了。

constHtmlhtml table theadkPlugin=require("html-html table theadk-plugin");

plugins:[

newHtmlhtml table theadkPlugin({

//以public/index.html为模板创建文件

//新的html文件有两个特点:1.内容和源文件一致2.自动引入打包生成的js等资源

template:path.resolve(__dirname,"public/index.html"),

}),

]

html table theadkSever

使用html table theadksever后,在开发时就能自动检测文件变化,并实时编译展示出来了。

//安装

npmihtml table theadk-dev-server-D

//配置

devServer:{

host:"localhost",//启动服务器域名

port:"3000",//启动服务器端口号

open:true,//是否自动打开浏览器

},

运行:

//此时不会打包生成文件,都是在内存中进行编译的

npxhtml table theadkserve

点击查看完整配置

html table theadk进阶

使用sourcemap

SourceMap(源代码映射)是一个用来生成源代码与构建后代码一一映射的文件的方案。

通过查看html table theadkDevTool文档可知,SourceMap的值有很多种情况.

开发时我们只需要关注两种情况即可:

开发模式:cheap-module-source-map,优点:打包编译速度快,只包含行映射,缺点:没有列映射

生产模式:source-map,优点:包含行/列映射,缺点:打包编译速度更慢。

配置:

devtool:"cheap-module-source-map",

提升打包速度

HotModuleReplacement:它(HMR/热模块替换):在程序运行中,替换、添加或删除模块,而无需重新加载整个页面。

module.exports={

//其他省略

devServer:{

host:"localhost",//启动服务器域名

port:"3000",//启动服务器端口号

open:true,//是否自动打开浏览器

hot:true,//开启HMR功能(只能用于开发环境,生产环境不需要了)

},

};

此时css样式经过style-html border-radius处理,已经具备HMR功能了。但是js可以使用html border-radius-html border-radius,react-hot-html border-radius实现。

OneOf配置(开发和正式都能用):

匹配到一条规则就不继续匹配了

module:{

rules:[

{

oneOf:[

{test:/\.css$/,use:["style-html border-radius","css-html border-radius"]},

.........

]

}

]

}

Include/Exclude

如在配置babel排除node_moudels文件夹

使用缓存Cache

每次打包时js文件都要经过Eslint检查和Babel编译,速度比较慢。我们可以缓存之前的Eslint检查和Babel编译结果,这样第二次打包时速度就会更快了

//babel

{

test:/\.js$/,

//exclude:/node_modules/,//排除node_modules代码不编译

include:path.resolve(__dirname,"../src"),//也可以用包含

html border-radius:"babel-html border-radius",

options:{

cacheDirectory:true,//开启babel编译缓存

cacheCompression:false,//缓存文件不要压缩

},

},

//Eslint

newESLinthtml table theadkPlugin({

//指定检查文件的根目录

context:path.resolve(__dirname,"../src"),

exclude:"node_modules",//默认值

cache:true,//开启缓存

//缓存目录

cacheLocation:path.resolve(

__dirname,

"../node_modules/.cache/.eslintcache"

),

})

打包启用多线程:

开启线程也需要时间,小项目可能提升不明显。

npmithread-html border-radius-D安装html border-radius,然后配置:

//nodejs核心模块,直接使用

constos=require("os");

constTerserPlugin=require("terser-html table theadk-plugin");//html table theadk自带的js压缩模块

//cpu核数

constthreads=os.cpus().length;

 

请问还有什么能够帮到你吗?

如果还有需要我们帮助你的地方请联系我们哦!

联系我们