前端工程化-babel、corejs、postcss

简介: 前端工程化-babel、corejs、postcss

一. babel和corejs的作用到底是什么

脑子里面的想法 es6 -> es5


es6里面其实有两种东西 语法 新特性


转的语法


const a = 1


const b = () => 123


... //解构 属于新语法


二. index.js

Promise.resolve(1).then((res) => console.log(res))


Object.assign({}) // 这些新特性是不会进行代码转换的 所以大家不要搞错


大家不信的话简单编写一个babel


在我的工程项目里面进行演示


先安装核心库 cnpm i @babel/core


在package.json 改 "type": "module"


再安装核心库 cnpm i @babel/preset-env


三. babe.js

1. es6 => es5

import babel from "@babel/core"
import fs from 'node:fs'
import presetEnv from "@babel/preset-env"
 
const code = fs.readFileSync('./index.js', 'utf-8') // 不加utf-8是字符串
// console.log(code)
 
// 同步转换 第二个参数是一个预设
babel.transformAsync(code, {
  presets: [presetEnv]
}).then((res) => {
  console.log(res.code) // es6 => es5
})CopyCopy

core-js 新的api怎么处理 会提供polyfill 也就是一个垫片

2. 原理

'Promise' in window 没有的话 在代码里面手写一个promise去用

'find' in Array.prototype 有没有 没有的话 在代码里面也是去手写一个

变成一个二维数组 cnpm i core-js

import babel from "@babel/core"
import fs from 'node:fs'
import presetEnv from "@babel/preset-env"
 
const code = fs.readFileSync('./index.js', 'utf-8') // 不加utf-8是字符串
// console.log(code)
 
// 同步转换 第二个参数是一个预设
babel.transformAsync(code, {
  presets: [[
    presetEnv,
    {
      useBuiltIns: 'usage', // 新特性会按需引入 垫片
      corejs: 3
    }
  ]]
}).then((res) => {
  console.log(res.code) // es6 => es5
})CopyCopy
1. const x = [1, 2, 3]
2. const y = x.filter(item => item > 1)CopyCopy

babel转语法的 core-js通过一个垫片 兼容这个新特性 所以大家这个babel千万不要搞混了

四. postcss的作用到底是什么

// babel + corejs 上一节已经将了这个 babel es6转es5 corejs兼容js的新特性


// babel 转换大概流程 js => AST(抽象语法树) => transform => generated code


// postcss 类似 js => AST(抽象语法树) => transform => generated code


他本身是一个工具 并不会做什么的


只是帮我提供这个过程 过程中间进行加工 比如加前缀 比如-ms -webkit -moz 兼容各种浏览器


只是提供这些 功能 插件由我们自己编写


官网 PostCSS - 是一个用 JavaScript 工具和插件来转换 CSS 代码的工具 | PostCSS中文网


加前缀 转换新特性 都是postcss带给我们的 我们简单的去实现一下它的相关功能

1. index.css

1. .display {
2. display: flex; /* 希望加上前缀 */
3.   color: oklch(61% 0.2 29); /* 很新的css函数 颜色空间 亮度 色相 饱和度 */
4. }CopyCopy

cnpm i postcss

cnpm i autoprefixer

cnpm i postcss-preset-env

处理新特性 跟babel是一样的 也叫 preset env

package.json 设置module

2. index.js

import postcss from "postcss"
import autoprefixer from "autoprefixer"
import postcssEnv from "postcss-preset-env"
import fs from "node:fs"
 
const css = fs.readFileSync('./index.css', 'utf-8')
 
// 插件塞进去
postcss([postcssEnv({
  browsers: 'last 2 versions' // 兼容最近的2个浏览器版本
}), autoprefixer]).process(css, {
  from: './index.css'
}).then(res => {
  console.log(res.css)
})
目录
相关文章
|
4月前
|
缓存 前端开发 JavaScript
前端性能优化:Webpack与Babel的进阶配置与优化策略
【10月更文挑战第28天】在现代Web开发中,Webpack和Babel是不可或缺的工具,分别负责模块打包和ES6+代码转换。本文探讨了它们的进阶配置与优化策略,包括Webpack的代码压缩、缓存优化和代码分割,以及Babel的按需引入polyfill和目标浏览器设置。通过这些优化,可以显著提升应用的加载速度和运行效率,从而改善用户体验。
121 6
|
8月前
|
JSON 前端开发 JavaScript
前端工程化:Webpack配置全攻略
【7月更文挑战第14天】
91 6
|
8月前
|
JSON 缓存 前端开发
前端工程化:Webpack配置全攻略
【7月更文挑战第18天】
78 1
|
9月前
|
缓存 前端开发 JavaScript
前端性能优化实践与工程化
前端性能优化实践与工程化
|
8月前
|
前端开发 JavaScript
webpack 和 babel 实用教程【前端必备】
webpack 和 babel 实用教程【前端必备】
75 0
|
10月前
|
资源调度 JavaScript 前端开发
【前端开发---Vue2】史上最详细的Vue入门教程(六) --- 工程化开发和脚手架、组件注册
【前端开发---Vue2】史上最详细的Vue入门教程(六) --- 工程化开发和脚手架、组件注册
【前端开发---Vue2】史上最详细的Vue入门教程(六) --- 工程化开发和脚手架、组件注册
|
9月前
|
前端开发 安全 JavaScript
前端工程化实战 - 日程管理
前端工程化实战 - 日程管理
60 0
|
9月前
|
存储 JavaScript 前端开发
前端工程化
前端工程化
68 0
|
9月前
|
运维 前端开发 JavaScript
什么是前端工程化❓
什么是前端工程化❓
97 0
|
9月前
|
资源调度 前端开发 JavaScript
前端工程化实践:Monorepo与Lerna管理
**前端工程化中,Monorepo和Lerna用于大型项目管理。Monorepo集纳所有项目,便于代码共享、版本控制和CI/CD。Lerna是Monorepo工具,管理多npm包,支持独立或共享版本。安装Lerna用`npm install --save-dev lerna`,初始化后可创建、管理包,通过`lerna bootstrap`、`lerna add`、`lerna publish`等命令协同工作。Lerna配置可在`lerna.json`,与CI/CD工具集成实现自动化。
96 0

热门文章

最新文章

  • 1
    【11】flutter进行了聊天页面的开发-增加了即时通讯聊天的整体页面和组件-切换-朋友-陌生人-vip开通详细页面-即时通讯sdk准备-直播sdk准备-即时通讯有无UI集成的区别介绍-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex
  • 2
    从前端视角聊聊通义灵码使用经验,如何更好地提升研发效率
  • 3
    巧用通义灵码,提升前端研发效率
  • 4
    详解智能编码在前端研发的创新应用
  • 5
    VSCode AI提效工具,通义灵码前端开发体验
  • 6
    智能编码在前端研发的创新应用
  • 7
    大前端之前端开发接口测试工具postman的使用方法-简单get接口请求测试的使用方法-简单教学一看就会-以实际例子来说明-优雅草卓伊凡
  • 8
    课程预告|前端开发者如何用好通义灵码,这份实战指南请查收
  • 9
    以项目登录接口为例-大前端之开发postman请求接口带token的请求测试-前端开发必学之一-如果要学会联调接口而不是纯写静态前端页面-这个是必学-本文以优雅草蜻蜓Q系统API为实践来演示我们如何带token请求接口-优雅草卓伊凡
  • 10
    【09】flutter首页进行了完善-采用android studio 进行真机调试开发-增加了直播间列表和短视频人物列表-增加了用户中心-卓伊凡换人优雅草Alex-开发完整的社交APP-前端客户端开发+数据联调|以优雅草商业项目为例做开发-flutter开发-全流程-商业应用级实战开发-优雅草Alex