Node.JS学习 | Babel | webpack | ES6

news2024/11/26 13:41:18

在这里插入图片描述

💗wei_shuo的个人主页

💫wei_shuo的学习社区

🌐Hello World !


Node.JS

Node.JS能够在服务器端运行JavaScript的开放源代码、跨平台运行环境;Node.js采用Google开发的V8运行代码,使用事件驱动、非阻塞IO和异步输入输出模型等技术来提高性能,可优化应用程序的传输量和规模

Node.JS实现HttpServer服务

//导入模块是require 类似于import java.io
const http = require('http');

//创建httpserver服务
http.createServer(function(request,response){
    //告诉浏览器将以text-plain去解析hello server
    response.writeHead(200,{'Content-type':'text/plain'});
    //输出内容给浏览器
    response.end("hello server!!!");
}).listen(8888);
console.log("你启动的服务是:http://localhost:8888")
//监听端口8888
//启动运行服务器node httpserver.js
//浏览器访问http://localhost:8888

Node.JS操作Mysql数据库

//导入mysql依赖包
const { connect } = require("http2");
var mysql = require("mysql");
//创建mysql的connection对象
//配置数据库连接信息
var connection = mysql.createConnection({
    host:"127.0.0.1",
    user:"root",
    port:3306,
    password:"root",
    database:"testdb"
})
//开启连接
connection.connect();
//执行curd
connection.query("select * from user",function(error,results,fields){
        //如果查询出错,直接抛出
        if(error)throw error;
        //查询成功
        console.log("result=",results);
})

//关闭连接
connection.end();
//运行node db.js查看效果

let-const-var

  • let有效避免var的变量穿透问题
  • const定义常量,避免常量被修改
  • 低版本浏览器不支持let和const
        for (var i = 0; i < 5; i++) {
            console.log(i);
        }
        //造成变量穿透
        console.log(i);

Npm构建Node工程

手动构建工程项目

  • npm init

在这里插入图片描述

  • 以下回车默认一直回车即可
    • package name: (vue_project):项目名称
    • version: (1.0.0):版本号
    • description:描述
    • entry point: (index.js):入口函数
    • test command:测试命令
    • git repository:仓库管理
    • keywords:关键词
    • author:作者
    • license: (ISC):许可证

在这里插入图片描述

在这里插入图片描述

  • 目录自动构建package.json
{
  "name": "vue_project",	//工程名
  "version": "1.0.0",		//版本
  "description": "",		//描述
  "main": "index.js",		//入口js
  "scripts": {				//运行脚本
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",				//作者
  "license": "ISC"			//授权协议
}

自动构建工程项目

  • npm init -y

在这里插入图片描述

安装依赖和模块

  • npm install mysql

  • npm install redis

在这里插入图片描述

在这里插入图片描述

依赖和模块使用

//导入模块redis
const redis = require("redis");
//导入mysql
const mysql = require("mysql");

运行项目

  • node xxx.js

如果安装依赖速度慢,可以使用淘宝镜像cnpm命令安装

  • 安装cnpm命令
  • npm install -g cnpm --registry=http://registry.npm.taobao.org
  • 安装cnpm命令后,将安装依赖的npm换成cnpm即可

安装依赖时指定版本号

  • npm install jquery@2.0.x

  • cnpm install jquery@2.0.x

卸载模板

  • npm uninstall jquery
  • cnpm uninstall jquery

package.JS

package.js是一个JavaScript文件,通常用于定义和描述一个JavaScript包。它的主要作用是提供一种标准化的方式来描述和管理代码库中的各个模块和依赖项。

具体来说,package.js文件可以定义以下内容:

  • 包的名称和版本号
  • 包的描述信息
  • 包的依赖项,包括所需的其他包、模块和库
  • 包的入口点,即应用程序或库将如何使用该包中的代码
  • 包的授权和许可证信息
  • 包的存储库地址和开发人员信息

通过在package.js文件中定义这些内容,开发人员可以更轻松地管理和共享代码库,并确保它们的依赖项被正确地安装和更新。同时,package.js文件也为JavaScript包提供了一种通用的描述方式,使得开发人员可以更轻松地了解和使用其他人编写的包

Babel

ES6高级语法在浏览器环境甚至是Node.JS环境无法执行,Babal是一个广泛使用的转码器,可以将ES6代码转换为ES5代码,从而在现有的环境执行

安装

安装

  • npm install -g babel-cli
  • cnpm install -g babel-cli

查看是否安装成功

  • babel --version

安装转码器(项目中安装)

  • npm install --save-dev babel-preset-es2015

使用

配置.babelrc

{
    "presets":["es2015"],
    "plugins":[]
}

cmd命令行执行

  • babel src -d dist

Babel自定义脚本

  • 改写package.json
{
	"scripts":{
        "build":"babel src -d dist"
    },
}
  • 转码时,执行如下命令
mkdir dist
npm run build

模块化

模块化是一种设计和开发软件的方法,它将大型系统分解成小的、相互独立的模块,每个模块负责一个特定的功能。这种方法可以使开发人员更容易地管理和维护复杂的系统,因为每个模块都有自己的接口和功能,可以独立地开发、测试和修改

模块化设计还可以提高软件的可重用性和可扩展性。因为每个模块都是相对独立的,所以它们可以轻松地与其他模块组合成新的系统或功能,而不需要对整个系统进行大规模的修改

模块化在软件工程中也被广泛应用于团队协作;不同的开发人员可以独立地开发和维护自己的模块,从而加快开发速度并减少错误的风险

  • CommonJS

CommonJS是一种早期的JavaScript模块化规范,最初是为了在服务器端使用JavaScript而设计的。它使用require()函数来导入模块,使用module.exports来导出模块。这种规范在Node.js中得到了广泛的应用,并被广泛用于编写服务器端JavaScript应用程序

  • ES6

ES6是ECMAScript 6标准引入的新的JavaScript语言规范。它引入了一种新的模块化系统,即ES6模块。这种模块化系统使用import和export语句来导入和导出模块;与CommonJS不同,ES6模块在浏览器端和服务器端都可以使用,并且具有更好的性能和更严格的语法检查

总之,CommonJS是一种早期的JavaScript模块化规范,用于在服务器端使用JavaScript,而ES6是ECMAScript 6标准引入的新的JavaScript语言规范,引入了一种新的模块化系统,即ES6模块

CommonJS

  • 导出
const sum = function (a, b) {
    return a + b;
}
const sub = function (a, b) {
    return a - b;
}
const mul = function (a, b) {
    return a * b;
}
const di = function (a, b) {
    return a / b;
}

//导出:方式一
// module.export={
//     sum:sum,
//     sub:sub,
//     mul:mul,
//     di:di,
// }

//导出:方式二
module.exports={
    sum,
    sub,
    mul,
    di
}
  • 导入
//require
const m = require('./四则运算.js')

console.log(m.sum(1,2))
console.log(m.sub(1,2))
console.log(m.mul(1,2))
console.log(m.di(1,2))
  • 测试

在这里插入图片描述

ES6

  • UserApi.java
export function getList(){
    //真实业务,异步获取数据
    console.log("获取数据列表")
}

export function save(){
    //真实业务,异步获取数据
    console.log("保存数据")
}
  • UserTest.java
import {getList,save} from './UserApi.js'

getList()
save()

终端安装Babel进行降级为ES2015

  • 安装转码器

npm install --save-dev babel-preset-es2015

  • 新建.babelrc配置文件
{
    "presets": ["es2015"],
    "plugins": []
}
  • package.json中编写脚本
"build": "babel src -d dist"
  • 终端运行命令
npm run build
  • 观察新增目录dist

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k0EFEpXP-1682503218566)(./image-20230308184654668.png)]

导入,导出

  • UserApi.java
export default{
    getList(){
        //真实业务,异步获取数据
        console.log("获取数据列表")
    },
    
    save(){
        //真实业务,异步获取数据
        console.log("保存数据")
    }
}
  • UserTest.java
import user from './UserApi.js'

user.getList()
user.save()

webpack

在这里插入图片描述

Webpack是一个现代化的JavaScript应用程序的静态模块打包器。它可以处理应用程序中的所有静态资源,包括JavaScript、CSS、HTML文件和图片等,将它们打包成一个或多个静态资源文件,以便于部署和优化性能

下载安装

  • cnpm install -g webpack@3.6.0
  • npm install -g webpack@3.6.0

查看版本

  • webpack -version

webpack合并JS

  • util.js
exports.add = (a, b) => a + b
  • common.js
//输出
exports.info = function (str) {
    console.log(str);
    document.write(str);
}
  • main.js
//导入util和common
const util = require("./util");
const common = require("./common");


common.info("Hello World," + util.add(100, 100));
  • webpack.config.js
//导入path模块
const path = require("path");
//定义JS打包规则
module.exports={
    //入口函数
    entry:"./src/main.js",
    //输出函数
    output:{
        path:path.resolve(__dirname,"./dist"),
        filename:"bundle.js"
    }
}
  • 终端输入webpack即可执行webpack.config.js文件进行合并打包

webpack合并CSS

webpack只能处理JavaScript模块,如果需要处理其他类型文件,需要使用loader进行转换

  • 安装style-loader和css-loader
  • npm install --save-dev style-loader css-loader
  • style.css
body {
    background: yellow;
    font-size: 64px;
    color: red;
}
  • main.js
//导入util和common
const util = require("./util");
const common = require("./common");

//导入css
require("./style.css");

common.info("Hello World," + util.add(100, 100));
  • webpack.config.js
//导入path模块
const path = require("path");
//定义JS打包规则
module.exports={
    //入口函数
    entry:"./src/main.js",
    //输出函数
    output:{
        path:path.resolve(__dirname,"./dist"),
        filename:"bundle.js"
    },
    //配置css打包规则
    module:{
        rules:[{
            test:/\.css$/,  //把项目中所有.css文件打包
            use:["style-loader","css-loader"]
        }]
    }
}
  • 终端输入webpack即可执行webpack.config.js中的css文件进行合并打包
  • webpack -w 实时编译

🌼 结语:创作不易,如果觉得博主的文章赏心悦目,还请——点赞👍收藏⭐️评论📝


在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587350.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Python常用数据结构

Python 提供了多种内置的数据结构&#xff0c;用于存储和组织数据。以下是一些常见的 Python 数据结构&#xff1a; 1.列表&#xff08;List&#xff09;&#xff1a;列表是一个有序、可变的数据集合&#xff0c;可以包含任意类型的元素。列表使用方括号 [] 表示&#xff0c;元…

谷歌周彦祺:LLM浪潮中的女性科学家多面手丨智源大会嘉宾风采

导读 大模型研发竞赛如火如荼&#xff0c;谷歌紧随OpenAI其后推出PalM2、Gemini等系列模型。Scaling Law是否仍然适用于当下的大模型发展&#xff1f;科技巨头与初创企业在竞争中各有哪些优势和劣势&#xff1f;模型研究者应秉持哪些社会责任&#xff1f; 2023智源大会「基础模…

华为OD机试真题B卷 Java 实现【最长的连续子序列】,附详细解题思路

一、题目描述 有N个正整数组成的一个序列,给定一个整数sum,求长度最长的的连续子序列使他们的和等于sum,返回该子序列的长度,如果没有满足要求的序列返回-1。 二、输入描述 第1行有N个正整数组成的一个序列。 第2行给定一个整数sum。 求最长连续子序列,只要遍历计算连…

补贴平价好书影响上亿读者:有一种力量叫“至拙”

通过一种“至拙”的力量&#xff0c;“多多读书月”带来诸多可喜的变化。 全民拼书&#xff1a;“多多读书月”带来平价好书 如果你也是一位热爱读书的小伙伴&#xff0c;那么想来一定不会不知道“多多读书月”。 2020年&#xff0c;在“三区三州”地区助力脱贫攻坚的公益活动中…

转转前端周刊第六十七期

转转前端周刊 本刊意在将整理业界精华文章给大家&#xff0c;期望大家一起打开视野 如果你有发现一些精华文章想和更多人分享&#xff0c;可以点击我们的公众号名称&#xff0c;将文章链接和你的解读文案发给我们&#xff01;我们会对内容进行筛选和审核&#xff0c;保留你的推…

详细理解GPT2模型结构及其训练过程—GPT系列训练与部署

本文为博主原创文章&#xff0c;未经博主允许不得转载。 本文为专栏《Python从零开始进行AIGC大模型训练与推理》系列文章&#xff0c;地址为“https://blog.csdn.net/suiyingy/article/details/130169592”。 GPT2模型环境搭建与调试请参考博文《GPT系列训练与部署—GPT2环境配…

一分钟学一个 Linux 命令 - ls

前言 大家好&#xff0c;我是 god23bin。今天我给大家带来的是 Linux 命令系列&#xff0c;每天只需一分钟&#xff0c;记住一个 Linux 命令不成问题。今天&#xff0c;我们要介绍的是一个常用而又强大的命令&#xff1a;ls&#xff08;list&#xff09;。 什么是 ls 命令&am…

CVPR 2023 | 去雨去噪去模糊,图像low-level任务,视觉AIGC系列

Learning A Sparse Transformer Network for Effective Image Deraining 基于Transformer的方法在图像去雨任务中取得了显著的性能&#xff0c;因为它们可以对重要的非局部信息进行建模&#xff0c;这对高质量的图像重建至关重要。本文发现大多数现有的Transformer通常使用查询…

Linux的进程信号(下)

文章目录 1. 阻塞信号1.1 信号其他相关常见概念1.2 在内核中的表示 2. sigset_t3. 信号集操作函数3.1 sigprocmask3.2 sigpending3.3. 实例演示 4. 信号的处理4.1. sigaction4.2 多个信号的处理 5. 可重入函数6. volatile7. SIGCHLD信号 1. 阻塞信号 1.1 信号其他相关常见概念…

java基于springboot自来水收费缴费系统+jsp

本次设计拟采用JAVA技术&#xff0c;对乡镇自来水收费系统的功能需求进行了全面分析&#xff0c;从模块功能定义、前后端交互技术、数据库及编程语言的选择、系统调试及测试、功能完善和改进等方面进行设计&#xff0c;解决了从用户新装、抄表、计费、收费、复查、换表、发票管…

Pyside6-第三篇-QToolButton一个奇葩的按钮

今天是Pyside6的第三篇内容。一起来看另一个按钮。 QToolButton。 from PySide6.QtWidgets import QToolButton, QWidget, QApplicationapp QApplication([])win QWidget() win.setWindowTitle("QToolButton按钮")btn QToolButton(win) btn.setText("触发&qu…

Cell揭秘--慢性压力如何导致肠道炎症

大脑产生的信号传导到肠道神经细胞&#xff0c;导致炎症化学物质的释放。 溃疡性结肠炎患者的肠道组织&#xff08;人工着色&#xff09;。图片来源: Steve Gschmeissner/Science Photo Library 心理压力会加重某些肠道疾病引起的肠道炎症。现在&#xff0c;科学家们找到了原因…

初学QT(Day05)

继续第四天的demo 总结了之前的经验教训&#xff0c;我重新开一个项目项目&#xff0c;先给出demo的结果吧&#xff0c;第一张是第一次写的demo&#xff0c;第二张图是成品的demo 结果还是比较满意的&#xff0c;虽然过程中有遇到的问题不是我自己独立解决的。。。相比于第…

GPT-4能否取代数据分析师?达摩院的初步实验为你解答~

深度学习自然语言处理 原创作者 | 刘嘉玲 最近&#xff0c;数据分析师圈子大家在讨论GPT-4对他们的工作有什么影响&#xff1a;是替代还是辅助&#xff1f;个人认为GPT-4可以帮助我提高工作效率和质量。 要成为一名高级的数据分析师&#xff0c;需要经过长期的学习和实践&#…

无代码玩转GIS应用,我也在行【文末送书】

您好&#xff0c;我是码农飞哥&#xff08;wei158556&#xff09;&#xff0c;感谢您阅读本文&#xff0c;欢迎一键三连哦。&#x1f4aa;&#x1f3fb; 1. Python基础专栏&#xff0c;基础知识一网打尽&#xff0c;9.9元买不了吃亏&#xff0c;买不了上当。 Python从入门到精通…

jQuery-图片跟随

<!DOCTYPE html > <html> <head> <meta http-equiv"Content-Type" content"text/html; charsetUTF-8"> <title>图片跟随 </title> <style type"text/css"> body { text-align: center; …

【配电网重构】基于改进二进制粒子群算法的配电网重构研究(Matlab代码实现

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

使用FPGA进行 AI 火灾定位-FirAI

部署在 FPGA 上加速的 AI 火灾侦查。助力消防人员快速应对火灾事故~ 绪论 问题&#xff1a;近年来&#xff0c;不断增加的城市人口、更复杂的人口密集建筑以及与大流行病相关的问题增加了火灾侦查的难度。因此&#xff0c;为了增强消防人员对火灾事件的快速反应&#xff0c;安装…

delmia机器人建模与装配

1 可以用catia中的模型或其他三维建模软件中的模型转化为step格式即可 2 在demlia中打开 3 打开单个零件保存为cgr格式 对机械臂所有零件都做同样的转化 4 新建装配设计&#xff0c;并导入带有坐标的零件 将转化后的零件都选中导入即是装配好的 5 将模式修改为device buildin…

用户行为数据采集:常见埋点方案优劣势对比及选型建议

数据采集是大数据的基石&#xff0c;用户在使用App、微信小程序等各种线上应用产生的行为&#xff0c;只有通过埋点才能进行采集。没有埋点&#xff0c;数据分析决策、数据化运营都是无源之水&#xff0c;巧妇难为无米之炊。但很多时候&#xff0c;“埋点”两个字却成了C端产品…