前端基础(ES6 模块化)

目录

前言

复习

[ES6 模块化导出导入](#ES6 模块化导出导入)

解构赋值

导入js文件

[export default](#export default)

全局注册

局部注册


前言

前面学习了js,引入方式使用的是<script s"XXX.js">,今天来学习引入文件的其他方式,使用ES6 模块化编程,学习组件化编程中的全局注册和局部注册的方法。

复习

回顾前面学习内容,用<script s"XXX.js">引入js文件

在html文件中引入js文件

html 复制代码
<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=<device-width>, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script src="learn.js">

    </script>
    <script>
        console.log(this.content)
        learn()
    </script>

</body>

js文件

javascript 复制代码
const content = "模块化";
const learner = "MRJJ_9";
function learn()
{
    console.log(`${learner}在学习${content}`);
}

ES6 模块化导出导入

先导出js文件

javascript 复制代码
export const content = "模块化";
export const learner = "MRJJ_9";
export function learn()
{
    console.log(`${learner}在学习${content}`);
}

简单写法,也可以写成下面这样的

解构赋值

import * as mrjj from './learn.js'

重命名为mrjj

导入js文件

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="module">
    import * as mrjj from './learn.js'
    import {content} from './learn.js'
    console.log(content);
    console.log(mrjj.learner);
    mrjj.learn()
</script>
</body>
</html>

export default

导出一个完整的对象 export default

只能有一个export

javascript 复制代码
export default{
    content : "模块化",
    learner : "MRJJ_9",
    learn()
    {
        console.log(`${this.learner}在学习${this.content}`);
    }
}

import mrjj_lr from './learnDefault.js'

需要取别名才能导入

html 复制代码
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
<script type="module">
    import mrjj_lr from './learnDefault.js'
    mrjj_lr.learn()

</script>
</body>
</html>

但在浏览器中不能使用

全局注册

javascript 复制代码
<body>
    <div id="aside"></div>
    <script type="module">
    import {createApp} from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'
    import Asider from './Asider.js'
    import Counter from './Counter.js'
    const asideApp=createApp(Asider);
    // 全局注册
    const asideVM=asideApp.component('Counter',Counter).mount("#aside");
    </script>
</body>

局部注册

const asideVM=asideApp.mount("#aside");

先在需要导入其他组件的文件里导入组件

import Counter from './Counter.js';

在export default添加components

export default{

components:{Counter}}

相关推荐
陈随易7 小时前
bm2,Node.js 与 Bun 项目部署新选择
前端·后端·程序员
福兮说8 小时前
canvas 旋转图片的六个坑:四角被裁、Math.ceil 多出 1px 黑边、JPG 角发黑、翻转方向反了
前端·javascript·图像处理·canvas
传人once10 小时前
多图片上传预览功能如何写
前端·css·html·jquery·html5
Eric.4610 小时前
Wan‑Animate+MiniMax-H3 本地部署 AI 漫剧流水线:8G 显存动作迁移与动态分镜工程实战
前端·人工智能·comfyui·ai漫剧
库拉镜像AI牛牛12 小时前
短剧内容自动化生产:知漫剧工作室落地教程
大数据·服务器·前端·人工智能·语音识别
律宏阔12 小时前
Flutter 列表图片内存优化:CachedNetworkImage 与 ClipRRect 的取舍
前端·flutter
行者全栈架构师12 小时前
【鸿蒙心迹】相册文搜图工程化落地:HarmonyOS 7.0 端侧 AI 检索全链路实战与 5 个踩坑解法
前端
律宏阔12 小时前
Dart 3 Record:解决 Future.wait 异构返回值的类型问题
前端·flutter
Seraphina3612 小时前
DVWA(XSS Reflected/Stored High,CSRF Low)
前端·xss·csrf
默_笙13 小时前
🍔 中间件不只是打日志:四个钩子、一次短路,和自带的工具
前端·javascript