JavaScript 服务器编程 模块化

js运行环境(运行时)

浏览器

node

缺点:

1、全局变量污染(多个js文件有相同变量时,后面会覆盖前面的,导致结果不是自己想拿到)。

2、依赖管理问题(多个文件之间有联系使用时,就需要都分别引入这些文件)。

服务端模块化

CommonJS规范 解决以上两个缺点

规范

1、每个JS文件都是一个独立的模块。

2、模块之前通信(使用),数据间的相互使用

在js文件中暴露需要给外部使用的变量、函数等,然后再需要使用的文件中接收就可以了,具体见day11代码

暴露可以给引用文件使用的标识符(接口):

module.exports = { 变量、函数};

接收:

const { 变量名接收 } = require("接收的文件路径");

let { 变量名接收 } = require("接收的文件路径");

具体代码:当以相同变量名暴露和接收时

文件1
​
let a =20;
module.exports = { a}; //文件1暴露
​
文件2
​
let b=200;
let { a } = require("./index1.js");//接收文件1的暴露
let c=a+b;
module.exports = { c};//文件2暴露
​
文件
​
let {c} = require("./index2.js");//接收文件2的暴露
console.log(c);//220
module.exports = { c};//文件暴露
let {str} = require("./index3.js");//接收文件3的暴露
console.log(`1是${str}`);//1是270
​
文件3
​
let str=50;
let { c } = require("./index.js");//接收文件的暴露
str+=c;
console.log(str);//270
module.exports = { str};//文件3暴露

具体代码:当以不同变量名暴露和接收时,需要以键值对的方式(常用,多个键值对以逗号隔开),键是暴露出来的名字,值是新声明用来接的变量名

文件1
​
let a =20;
module.exports = { a}; //文件1暴露
​
文件2
​
let b=200;
let { a:a1} = require("./index1.js");//接收文件1的暴露
let c=a1+b;
module.exports = { c};//文件2暴露
​
文件
​
let {c:c1} = require("./index2.js");//接收文件2的暴露
console.log(c1);//220
module.exports = { c1};//文件暴露
let {str:sum} = require("./index3.js");//接收文件3的暴露
console.log(`1是${sum}`);//1是270
​
文件3
​
let str=50;
let { c1:c2 } = require("./index.js");//接收文件的暴露
str+=c2;
console.log(str);//270
module.exports = { str};//文件3暴露

12 服务器编程-node 模块化

CommonJS规范 解决以上两个缺点

规范

1、每个JS文件都是一个独立的模块。

2、模块之前通信(使用),数据间的相互使用。

3、包 package(包含多个模块的,多个模块集合成一个包)。

每一个包的根目录都有一个package.json文件,是包的描述文件。

 

更多命令操作:Windows 终端命令大全_码--到成功的博客-CSDN博客_windows终端命令

在环境中执行时,需要以下操作:

进入目录

进入一层:cd 目录名称

进入多层:cd 目录A/ 目录B/ 目录C

退出目录

退出上一层:cd..

退出根目录:cd\

NPM node package manage node包管理工具

npm init 初始化包,建立package.json文件

 

 

 

淘宝镜像:npm config set registry https://registry.npm.taobao.org

 

安装三方工具包 npm install jquery

 

Express 应用程序生成器

基于NodeJs的框架(Web应用)。

Express步骤:

1、创建一个包(文件夹)。

2、进入文件夹。

3、在终端打开执行 npx express-generator(项目初始化,搭建项目框架)。

4、启动应用 node ./bin/www 或者直接npm start。

5、打开浏览器,在地址栏访问应用 http://127.0.0.1+端口 或者http://localhost+端口。

6、修改端口号。

项目结构:

app.js:项目的入口文件。

bin:是项目启动的文件(start文件的储存位置),也是在里面修改端口号。

node_modules:第三方依赖(第三方包)。

public:存放静态资源(img,html,css,js),这些都是在浏览器执行和解析的内容。

routes:路由,分发和管理请求与服务。

 

创建一个myapp文件,在终端打开 构成框架

 

自动安装所有依赖,如果有其他没有的,需要单独下载

 

获取请求

get请求方式,使用req.query获取请求数据

post或者其他请求方式,使用req.body获取请求数据

 

 

浏览器模块化

ESM规范

和服务端模块化类似,在html文件引入时要+type="module"。

暴露可以给引用文件使用的标识符(接口):

export let a=1;//暴露一个

export default{a,b};//暴露多个

接收:

import {接收变量名} form "接收的文件路径"。//若是名字不同需要暴露名 as 新名。

import result,{接收变量名} form "接收的文件路径"。//其中result是所有接收的一个对象。

具体代码:

html文件
​
<script type="module" src="./javascripts/index.js"></script>
​
index1文件
​
export let a=100;
export default{a}; 暴露数据
​
index文件
​
import {a} from "./index1.js"; 接收数据
console.log(a);//100
​
若引入的变量名和接收页面同名
​
index文件
​
let a=300;
import {a as a1} from "./index1.js";
console.log(a);//300
console.log(a1);//100
​
若同时暴露并引入的多个变量
​
index1文件
​
export let a=100;
export let str='abc';
export default{a,str};
​
index文件
​
let a=300;
import result, {a as a1,str} from "./index1.js";
console.log(a);//300
console.log(a1);//100
console.log(result);//{a: 100, str: 'abc'}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值