详解JavaScript模板化使文章更清晰的全过程

 更新时间:2025年04月23日 11:36:56   作者:善良的小乔  
模块化就是把一大段代码拆分成一个个小文件(模块),每个模块独立工作,互相协作,那么JavaScript模板化是如何使文章更清晰呢,本文给大家详细介绍了JavaScript模板化使文章更清晰的全过程,需要的朋友可以参考下

一. 主要概念

什么是模板化?

一句话解释:模块化就是把一大段代码拆分成一个个小文件(模块),每个模块独立工作,互相协作。

为什么要用模块化?

想象一下你写了一个 3000 行的大项目代码,如果所有变量、函数都写在一个文件里,会发生什么?

变量命名冲突,逻辑难以维护,重用困难或者团队协作容易踩雷。

因此,使用模块化解决了这些问题,带来了:

  • 作用域隔离:模块里的变量不会影响外部。

  • 按需加载:只加载用到的模块。

  • 更容易维护:每个文件职责清晰。

  • 方便复用:模块可以在不同项目中复用。

模块的基本特性 

一个模块通常具备以下特点:

特性含义
独立作用域模块内部的变量不会影响其他模块
导出接口模块暴露哪些内容给外部使用(如函数、常量)
导入其他模块模块可以引用别的模块的内容

二. 模块化的演变历史

1. 没有模块(最早)

<script>
  // 所有代码混在一个文件,全局变量污染严重
</script>

2. CommonJS(Node.js 专用) 

// math.js
function add(a, b) {
  return a + b;
}
module.exports = { add };
 
// main.js
const math = require('./math');
console.log(math.add(2, 3)); // 5

特点:

  • 同步加载模块(适用于服务器端)

  • requiremodule.exports

3. AMD / RequireJS(早期浏览器模块) 

define(['math'], function (math) {
  console.log(math.add(2, 3));
});

特点:

  • 支持异步加载模块

  • 用于浏览器早期阶段

4. ES Modules(现代浏览器和 Node.js 支持) 

// math.js
export function add(a, b) {
  return a + b;
}
 
// main.js
import { add } from './math.js';
console.log(add(2, 3)); // 5

特点:

  • 浏览器和 Node.js 都支持

  • 支持静态分析、tree shaking、异步加载

三. 常用导入导出语法(ES Module) 

命名导出

// math.js
export const PI = 3.14;
export function square(x) { return x * x; }
 
// 使用
import { PI, square } from './math.js';

默认导出 

// logger.js
export default function log(msg) {
  console.log(msg);
}
 
// 使用
import log from './logger.js';

全部导入为命名空间

import * as utils from './math.js';
console.log(utils.square(4));

四. 示例 

例题:构建一个模块化的计算器

题目描述:做一个简化版的模块化计算器项目,包含两个模块 + 一个主程序:

/calculator.js    ← 数学计算模块
/logger.js        ← 日志模块
/main.js          ← 主程序模块

calculator.js:导出基本的加减乘除函数

// calculator.js
export function add(a, b) {
  return a + b;
}
 
export function subtract(a, b) {
  return a - b;
}
 
export function multiply(a, b) {
  return a * b;
}
 
export function divide(a, b) {
  return b !== 0 ? a / b : 'Cannot divide by zero';
}

logger.js:导出默认的 log 函数

// logger.js
export default function log(message) {
  console.log(`[Log] ${message}`);
}

 main.js:导入并使用模块

// main.js
import * as calc from './calculator.js';
import log from './logger.js';
 
const result = calc.multiply(4, 5);
log(`4 x 5 = ${result}`);
 
const result2 = calc.divide(10, 2);
log(`10 ÷ 2 = ${result2}`);

详解 

1. calculator.js:命名导出

// calculator.js
export function add(a, b) { ... }
export function subtract(a, b) { ... }
export function multiply(a, b) { ... }
export function divide(a, b) { ... }

解释:

  • export function xxx 就是命名导出

  • 导出多个功能函数,调用时可以按需导入

2. logger.js:默认导出

// logger.js
export default function log(message) {
  console.log(`[Log] ${message}`);
}

解释:

  • export default 表示这是模块的默认输出

  • 一个模块只能有一个 default export

  • 默认导出在导入时可以重命名

3. main.js:导入模块并使用

import * as calc from './calculator.js';
import log from './logger.js';
 
const result = calc.multiply(4, 5);
log(`4 x 5 = ${result}`);

解释:

import * as calc from './calculator.js'

  • 表示把所有命名导出聚合成一个对象 calc

  • 使用时通过 calc.add() 这样的方式调用

import log from './logger.js'

  • 这是导入默认导出,不需要加花括号

  • 名字可以自定义(默认导出 ≠ 名字必须叫 log)

模块导入导出方式总结 

五. 总结

1. 模块是为了隔离作用域、组织代码

2.export 是导出,import 是导入

3. 命名导出可以多个,默认导出只有一个

4. 导入时你可以选择单独导入或整体打包成命名空间

以上就是详解JavaScript模板化使文章更清晰的全过程的详细内容,更多关于JavaScript模板化过程的资料请关注脚本之家其它相关文章!

相关文章

  • JavaScript电话号码格式化的多种实现方式

    JavaScript电话号码格式化的多种实现方式

    本文希望通过一道简单的题目,让刚接触JavaScript的新手们了解一个合格的前端程序员需要具备哪些素质,文章给大家介绍了JavaScript电话号码格式化的多种实现方式,感兴趣的小伙伴跟着小编一起来看看吧
    2024-11-11
  • js实现广告漂浮效果的小例子

    js实现广告漂浮效果的小例子

    这篇文章介绍了在JS中广告漂浮效果的实现代码,有需要的朋友可以参考一下
    2013-07-07
  • 纯js模仿windows系统日历

    纯js模仿windows系统日历

    本文主要介绍了纯js模仿windows系统日历的思路与实现方法。具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • Javascript监视变量变化的方法

    Javascript监视变量变化的方法

    这篇文章主要介绍了Javascript监视变量变化的方法,涉及javascript针对变量的相关操作技巧,需要的朋友可以参考下
    2015-06-06
  • JavaScript加入收藏夹功能(兼容IE、firefox、chrome)

    JavaScript加入收藏夹功能(兼容IE、firefox、chrome)

    这篇文章主要介绍了JavaScript加入收藏夹功能,兼容IE、firefox、chrome,并解决了window.sidebar.addPanel is not a function问题,需要的朋友可以参考下
    2014-05-05
  • 如何用JS追踪用户

    如何用JS追踪用户

    本文介绍如何编写JavaScript脚本,将用户数据发回服务器。对此感兴趣的同学,可以参考下
    2021-05-05
  • javascript 面向对象封装与继承

    javascript 面向对象封装与继承

    本文是对自己这么长时间以来学习javascript面向对象的总结,这里针对封装和继承结合实例进行了详细分析,给有相同需求的小伙伴们参考下吧。
    2014-11-11
  • antDesign 自定义分页样式的实现代码

    antDesign 自定义分页样式的实现代码

    这篇文章主要介绍了antDesign 自定义分页样式的实现代码,这里用到了自定义指令,如果大家用不到可以按照自己的实际效果开发,本文通过实例代码给大家详细讲解,需要的朋友可以参考下
    2022-10-10
  • canvas绘图不清晰的解决方案

    canvas绘图不清晰的解决方案

    本文主要介绍了canvas绘图不清晰的解决方案,具有很好的参考价值,下面跟着小编一起来看下吧
    2017-02-02
  • javascript实现input file上传图片预览效果

    javascript实现input file上传图片预览效果

    这篇文章主要介绍了javascript实现input file上传图片预览效果,感兴趣的小伙伴们可以参考一下
    2015-12-12

最新评论