amd模块化——typeScript下载于安装以及运行 ——yarn下载——TS的运行——Ts数据类型描述

Posted 勇敢*牛牛

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了amd模块化——typeScript下载于安装以及运行 ——yarn下载——TS的运行——Ts数据类型描述相关的知识,希望对你有一定的参考价值。

在了解此之前先明白amd模块化

一、amd定义及规范说明

  • AMD(Asynchronous Module Definition):异步模块加载机制,是一个在浏览器端模块化开发的规范。
  • 什么是异步模块加载机制:javascript在浏览器中被解析和执行时具有阻塞的特性,当JavaScript代码执行时,页面的解析、渲染以及其他资源的下载都要停下来等待脚本执行完毕。
  • 模块化的标准规范函数:异步加载模块require.js,依赖前置:在一开始就将所有依赖项加载完全 ,
  • API—define():具有异步性。当define函数执行时,它首先会异步的去调用第二个参数中列出的依赖模块,当所有的模块被载入完成之后,如果第三个参数是一个回调函数则执行,然后告诉系统模块可用,也就通知了依赖于自己的模块自己已经可用

1、RequireJs 介绍

requireJs主要解决两个问题

  • (1)多个js文件可能有依赖关系,被依赖的文件需要早于依赖它的文件加载到浏览器,即依赖性最大的文件有一定要放在最后面加载【解决:管理每个模块之间的依赖,便于维护】
  • (2)js加载的时候浏览器会停止页面渲染,加载文件越多,页面失去响应时间越长【解决:实现js文件的异步加载,避免网页失去响应】

2、requireJs 使用

(1)require.js下载下来之后引包,放在目录上。

(2)定义模块

每个模块都有自己独立的作用域,在定义模块的时候,使用requirejs提供的函数define()来定义,语法函数如下:

define("模块名称", ["模块的依赖项"], function()

可以不用写模块名称
函数体:模块的具体实现,模块中所有的代码全都放在该函数中

)

(3)在require.js中,使用require.js提供的函数 require()来引用一个模块

require(["模块文件的路径(不带.js后缀的)"], function()

模块加载成功之后的回调函数

模块的加载是异步的,在模块加载完成之后,才能使用模块的相关功能

)

a.js

define(function () 
    return 
        a: 1,
        b: 2,
        c: function () 
            console.log("AAAA");
        ,
        rand:function()
            return "#qweeqwer"
        
    
);


相当于以下代码
export default 
    a: 1,
    b: 2,
    c: function () 
        console.log("AAAA");
    

c.js
如果模块之间有依赖加载:

define(["./a"], function(obj) 
    return 
        init:function()
            var div=document.createElement("div");
            Object.assign(div.style,
                width:"50px",
                height:"50px",
                backgroundColor:obj.randomColor()
            )
            document.body.appendChild(div);
        
    
);

主要执行的代码入口main.js

require(["./a","./b","./c"],function(obj,fn,init)//可以解构
    console.log(obj);
    fn();
    init();
)

require(["./a","./b","./c"],function(obj,fn,o)//和以上做个对比
    console.log(obj);
    console.log(obj.randomColor());
    fn();
    o.init();
)


相当于import obj from "./a"

那以上代码就必须依靠require.js执行
html中,运行。

<script src="./require.js" data-main="./js/mian.js"></script>

typeScript下载

下载与安装
npm i typescript -g
查看版本
tsc -v

yarn下载

支持断点续传
npm i yarn -g
如果这个npm运行比较慢就可以使用yarn,他的运行结果和npm一致
yarn init -y
yarn等价于npm i
下载
yarn add bootstrap
yarn remove bootstrap


执行ts文件

  • 创建一个typescript文件夹
  • 在这个文件终端打开
  • 输入tsc --init初始化TS工程生成一个tsconfig.json文件

解析这tsconfig文件
ts转化为es几

- "target": "ES5",

转换为什么模块化

  • "module": "AMD",

ts文件所在的根目录

  • "rootDir": "./",

输出路径 ts转换为js放在什么路径下

  • "outDir": "./",

"declaration": true, 声明定义
"declarationMap": true, 声明映射
"sourceMap": true, 源映射

接下来:在ts文件夹创建Main.ts

在命令行中输入tsc -w 监视转换

知识点:es6卸载ts里面是支持的,并且配置好会自动转化为es5

写完之后在typescript下新建一个index.html文件
引文文件和配置。

<script src="./require.js" data-main="./js/Main.js" async defer></script>

然后执行这个inde.html文件就可以使用写在typesrcipt里面的内容了。


Ts数据类型描述

强类型语言,一旦声明就要赋值,不然就会报错
数字型

var a:number=1;
//a="a"; 当类型不一致时会报错			
var b:Number=2;				
var c:number =3;
console.log(a,b,c);

类型的描述:小写支持栈中存储这个类型,大写支持栈中存储类型和堆中存储的该类型对象类型。
字符串

var a:string="a";
var b:String="a";

布尔值

var a:boolean=true;
var b:Boolean=false;

undefined

var a:undefined;
a=undefined;

null

 var o:null=null

a的类型既可以是数值也可以是字符串
a的类型可以是数值也可以是字符串

var a:number|string;
var o:object|null=a:1,b:2;

数组的写法

var arr:number[] = [1,2,3];
var arr1:number[][] = [[12,3],[2,4]];

泛型数组

var arr1:Array<number>=[1,3];
var arr:Array<Array<number>>=[[12,3],[2,4]];
var arr:Array<number|string>=[1,2,"asd"];

元组 把每个下标变量全部指出类型
必须按照顺序写

var arr:[string,number,boolean]=["a",1,true];

枚举
如果枚举没有设定时,默认输出的是以0开始的下标
只能使用赋值数值和字符

enum COLORRED,GREEN,BLUE;

enum COLORRED="red",GREEN="green",BLUE="blue";
console.log(COLOR.RED);

任意类型 ,禁用!!!!!

var a:any=3;
 a="a";

设置函数返回的类型

返回一个数字 
function fn():number

    return 1;

当函数没有使用return返回结果时,是void
function fn():void

    console.log("aa");

返回一个对象
function fn_1():object

    return 

永远不成功的值
function fn():never

    throw new Error("aa");


设置一个对象类型的数据但是不能修改(接口)

var o:object=a:1,b:2;

断言
继承后的对象遍历

var arr:Array<Box> =[];
// arr.push(new Box)
arr.push(new Ball)
// arr.push(new Box)
console.log(arr);
arr.forEach((element:Box) => 
    console.log(element);
    (element as Ball).run();
    (<Ball>element).run();
    
);

获取document对象

var div:HTMLElement|null = document.querySelector("div");
var div:HTMLElement = document.querySelector("div") as HTMLElement;

以上是关于amd模块化——typeScript下载于安装以及运行 ——yarn下载——TS的运行——Ts数据类型描述的主要内容,如果未能解决你的问题,请参考以下文章

对于ES6模块,相当于AMD的require.toUrl

AMD模块介绍(翻译)

django 安装PIL模块

TypeScript环境搭建

TypeScript环境安装,以及配置idea开发环境

amdcmdCommonJS以及ES6模块化