IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 传统js commonJs AMD(requireJs) ES6对比 -> 正文阅读

[JavaScript知识库]传统js commonJs AMD(requireJs) ES6对比

一、传统JS

index.html代码:

<div>

测试commonJS,AMD,ES6

</div>
<script src="./classic.js"></script>
<script>

console.log(app.name);
var help = new Help("张三",18);
help.showInfo();

</script>

classic.js代码

在这里插入代码片

结果:
在这里插入图片描述

二、CommonJS

概念:CommonJS,因为js没有模块的功能所以CommonJS应运而生,它希望js可以在任何地方运行,不只是浏览器中,也包括nodejs服务器端的广泛使用

commonjs必须运行在nodejs环境
1、安装部署nodejs项目
1.1、官网安装nodejs
1.2、npm init 初始化一个nodejs项目
1.3、npm install express 安装server模块
1.4、新建app.js主入口文件

  • app.js文件:
let express=require("express");

let app=new express();
 
app.engine('html',ejs.__express); 
app.set('view engine','html');
app.listen(3000,()=>{//3000是端口号,可以自己设置
    console.log("启动成功");
})

// 引入自定义commonjs模块 默认后缀名为js
var mod = require('./common.js');//这么写也可以 var mod = require('./common');

var key = mod.key;

console.log("mod",mod);


app.get("/",(req,res)=>{
    // req 请求---向服务器请求资源
    // res 响应--给前端发送数据
    res.send("nodejs欢迎你")
})

app.get("/home",(req,res)=>{
    // req 请求---向服务器请求资源
    // res 响应--给前端发送数据
    res.render('index.html');
})
  • 新建common.js
// 普通变量
const key = "JWOEJFOWEJOFIWFPJPOEF";

var app = {
	
	name:"张三",
	say(){
		alert('哈哈');
	}
}

// 类
class Help {
	constructor(name,age){
		this.name = name;
		this.age = age;
	}
	
	showInfo(){
		
		console.log("名字是:" + this.name + " 年龄是:" + this.age);
	}
	
}

module.exports = {key,app,Help};

  • 运行nodejs项目
    node app.js

  • 访问 http://localhost:3000/home
    结果:
    在这里插入图片描述

三、AMD

AMD(异步模块定义)是为浏览器环境设计的,因为 CommonJS 模块系统是同步加载的,当前浏览器环境还没有准备好同步加载模块的条件。

requirejs即为遵循AMD规范的模块化工具。
1、官网下载require.js
下载地址:https://requirejs.org/docs/release/2.3.6/minified/require.js
2、编写index.html

<div>

测试commonJS,AMD,ES6
<div id="cont">哈哈</div>
</div>
<script src="./require.js" defer async="true" data-main="js/main"></script>

3、新建js文件夹,在文件下新建main.js文件(主入口脚本)和index.js(模块脚本)

  • main.js代码
require.config({
    paths : {
        "jquery" : ["http://libs.baidu.com/jquery/2.0.0/jquery.min","jquery"], // 如果网络文件不存在,则加载本地js文件夹下的jquery.js
		"index" : "index"
    }
})

require(["jquery","index"],function($,index){
	console.log($("#cont").html());
	console.log(index.key);
	index.app.name;
	index.app.say();
	
	var help = new index.Help("张三",18);
	
	help.showInfo();
	
})
  • index.js代码
// 普通变量
define(function(){
		const key = "JWOEJFOWEJOFIWFPJPOEF";

		var app = {
			
			name:"张三",
			say(){
				console.log('say func invoke');
			}
		}

		// 类
		class Help {
			constructor(name,age){
				this.name = name;
				this.age = age;
			}
			
			showInfo(){
				
				console.log("名字是:" + this.name + " 年龄是:" + this.age);
			}
			
		}
		
		return {key,app,Help};
	}
)

结果:
在这里插入图片描述

四、ES6

定义:ES6内置到js中,我们在浏览器端无需额外引入requirejs来进行模块化。

注:因为本地访问会存在加载js文件报跨域的问题,所以需要搭建一个服务器,nodejs或者phpstudy都可以,本文采用nodejs + http-server插件搭建一个简易的本地web服务

1、官网安装nodejs,node -v查看是否安装成功
2、npm install http-server -g
3、在项目根目录http-server启动服务

服务器搭建完毕,开始编写代码
  • index.html代码
<div>

测试commonJS,AMD,ES6
<div id="cont">哈哈</div>
</div>
<script type="module" src="main.js"></script>
1. 指定名称导出/导入
  • main.js代码
import {key,app,Help} from './index.js';

 console.log(key);
 app.say();
 var help = new Help("张三",18);

 help.showInfo();
  • index.js代码
// 普通变量
const key = "JWOEJFOWEJOFIWFPJPOEF";

var app = {
	
	name:"张三",
	say(){
		console.log("say invoke444");
	}
}

// 类
class Help {
	constructor(name,age){
		this.name = name;
		this.age = age;
	}
	
	showInfo(){
		
		console.log("名字是:" + this.name + " 年龄是:" + this.age);
	}
	
}

export {key,app,Help};

访问http://127.0.0.1:8080/
结果:
在这里插入图片描述

2. default导出/导入
  • main.js代码
import app from './index.js';

 app.say();

  • index.js代码
var app = {
	
	name:"张三",
	say(){
		console.log("say invoke444");
	}
}

export default app;

访问http://127.0.0.1:8080/
结果:
在这里插入图片描述

完结

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-07-20 18:43:07  更:2022-07-20 18:45:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 6:57:30-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码