[TypeScript] 建立与使用AMD Library

前言

使用Visual Studio开发TypeScript项目时,开发人员可以将可重用的程序代码,封装为AMD Library来提供其他开发人员使用。本篇文章介绍如何将可重用的程序代码封装为AMD Library,主要为自己留个纪录,也希望能帮助到有需要的开发人员。(本篇文章使用TypeScript 1.8开始提供的功能,请先升级再进行后续开发步骤。)

建立

首先开启Visual Studio来建立一个新项目:「myLibrary」,专案类型选择为:具有TypeScript的HTML应用程序,并且清除项目预先建立的内容档案。这个项目用来封装可重用的程序代码,提供其他开发人员使用。

  • 建立项目

  • 项目结构

接着在项目里,加入一个与项目同名的文件夹:「myLibrary」。并且在该文件夹内,加入提供其他开发人员使用的程序代码类别:「MyClass」。 (如果有更多共享类别,也是建置在myLibrary文件夹内。)

  • myLibrary\MyClass.ts

    export class MyClass {
    
        // methods
    public getMessage(): string { return "Clark";
    }
    }
  • 项目结构

再来还需要在项目根目录下,建立一个与项目同名的ts檔:「myLibrary.ts」,用来汇出项目里的类别。(如果有更多共享类别,也是加入到myLibrary.ts里汇出。)

  • myLibrary.ts

    // export
    export * from "./myLibrary/myClass";
  • 项目结构

完成类别建立之后,接着调整项目的TypeScript建置设定。将项目设定为,在建置时:编译为AMD模块、输出单一档案、并且产生宣告档案。

  • TypeScript建置设定

完成设定步骤后,存盘并且编译项目,就可以在项目的bin目录下取得编译完成的AMD Library内容档:myLibrary.d.ts、myLibrary.js、myLibrary.js.map。

  • 产出AMD Library

使用

接着开启Visual Studio来建立一个新项目:「myApp」,这个项目用来说明,如何使用封装为AMD Library的程序代码。

  • 建立项目

  • 项目结构

建立项目之后,接着调整项目的TypeScript建置设定。将项目设定为,在建置时:编译为AMD模块。

  • TypeScript建置设定

完成项目设定之后,加入一个「lib」文件夹。并且把myLibrary项目所产出的AMD Library的三个档案,加入到这个lib文件夹中。

  • 加入AMD Library

加入AMD Library之后,接着在项目预设的index.html里面,加入下列程序代码,使用RequireJS挂载AMD Library,并且执行预设的app.ts内容。

  • 挂载AMD Library

    <!-- require -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js"></script>
    <script>
    require.config({
    paths: {
    "myLibrary": "lib/myLibrary"
    }
    });
    </script>
  • 执行app.ts

    <!-- start -->
    <script>
    require(["app"]);
    </script>
  • 完整的index.html

    <!DOCTYPE html>
    
    <html lang="en">
    <head>
    <meta charset="utf-8" />
    <title>TypeScript HTML App</title>
    <link rel="stylesheet" href="app.css" type="text/css" /> <!-- require -->
    <script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.2.0/require.min.js"></script>
    <script>
    require.config({
    paths: {
    "myLibrary": "lib/myLibrary"
    }
    });
    </script> <!-- start -->
    <script>
    require(["app"]);
    </script> </head>
    <body>
    <h1>TypeScript HTML App</h1> <div id="content"></div>
    </body>
    </html>

接着在app.ts里面,加入下列程序来使用Library里面所封装的程序代码。(编写程序代码的时候,可以发现myLibrary支持IntelliSense提示。)

  • 参考AMD Library

    // reference
    /// <reference path="./lib/myLibrary.d.ts" /> // import
    import * as myLibrary from "myLibrary";
  • 使用AMD Library中的程序代码

    // test
    var x = new myLibrary.MyClass();
    var message = x.getMessage(); // alert
    alert(message);
  • 完整的app.ts

    // reference
    /// <reference path="./lib/myLibrary.d.ts" /> // import
    import * as myLibrary from "myLibrary"; // test
    var x = new myLibrary.MyClass();
    var message = x.getMessage(); // alert
    alert(message);
  • IntelliSense提示

最后,执行myApp。可以在执行画面上,看到一个Alert窗口显示从Library取得的讯息内容,这也就完成了使用Library的相关开发步骤。

  • 显示回传讯息

范例下载

范例程序代码:下载地址

[TypeScript] 建立与使用AMD Library的更多相关文章

  1. [Tool] 使用Visual Studio Code开发TypeScript

    [Tool] 使用Visual Studio Code开发TypeScript 注意 依照本篇操作步骤实作,就可以在「Windows」.「OS X」操作系统上,使用Visual Studio Code ...

  2. Visual Studio Code开发TypeScript

    [Tool] 使用Visual Studio Code开发TypeScript   [Tool] 使用Visual Studio Code开发TypeScript 注意 依照本篇操作步骤实作,就可以在 ...

  3. 转载 《我用 TypeScript 语言的七个月》

    快速使用Romanysoft LAB的技术实现 HTML 开发Mac OS App,并销售到苹果应用商店中.   <HTML开发Mac OS App 视频教程> 土豆网同步更新:http: ...

  4. (7) 引用Objective-C class library

    原文 引用Objective-C class library 这个范例是如何在Xamarin.ios中去使用一个我们自行在Xcode中开发的Objective-c Class Library. 主要会 ...

  5. [Xamarin.iOS] 如何引用Objective-c寫的Class Library (转帖)

    這個範例是如何在Xamarin.ios中去使用一個我們自行在Xcode中開發的Objective-c Class Library. 主要會執行的步驟如下 1. 在Xcode 裡面去建立一個Class ...

  6. SuiteScript > RecordType internalID采集步骤与结果

    当你碰到一个有很多sub Fields的id需要map到js文件的时候,是不是想到一个个复制到js文件中?建立成Object,library起来,方便不同的module中共享. 一个复制,很烦,很浪费 ...

  7. [CLK Framework] CLK.Threading.PortableTimer - 跨平台的Timer类别

    [CLK Framework] CLK.Threading.PortableTimer - 跨平台的Timer类别 问题情景 开发应用程式的时候,免不了需要加入一些定时执行的设计,例如说:定时更新画面 ...

  8. C++ DLL中导出函数的声明的方法

    定义: TESTDLLEXPORT_API int fnTestDllExport(void); TESTDLLEXPORT_API int fnTestCall(void); TESTDLLEXPO ...

  9. WPF中嵌入Flash(ActiveX)

    1. 建立 WPF Application. 首先,建立一个名为 FlashinWPF 的 WPF Application 2. 设置 Window 属性. 在 XAML 中修改 Window 的属性 ...

随机推荐

  1. 轻量级前端MVVM框架avalon - 整体架构

    官网提供架构图 单看这个图呢,还木有说明,感觉有点蛋疼,作者的抽象度太高了,还好在前面已经大概分析过了执行流程 如图 左边是View视图,我们就理解html结构,换句话就是说用户能看到的界面,渲染页面 ...

  2. js中用tagname和id获取元素的3种方法

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 如何完全卸载OneDrive (Windows 10 64bit)

    原文参考 http://lifehacker.com/how-to-completely-uninstall-onedrive-in-windows-10-1725363532 To complete ...

  4. 排名前 8 的 PHP 调试工具

    Web 开发并不是一项轻松的任务,有超级多服务端脚本语言提供给开发者,但是当前 PHP 因为具有额外的一些强大的功能而越来越流行.PHP 是最强大的服务端脚本语言之一,同时也是 web 开发者和设计者 ...

  5. MySQL数据库实例参数对比脚本

    如何对比两个MySQL实例的参数情况,生产中常会有这样的需求,最近写了个python脚本,可基本实现该需求. 脚本 #!/usr/bin/python import MySQLdb,sys def f ...

  6. geotrellis使用(五)使用scala操作Accumulo

    要想搞明白Geotrellis的数据处理情况,首先要弄清楚数据的存放,Geotrellis将数据存放在Accumulo中. Accumulo是一个分布式的Key Value型NOSQL数据库,官网为( ...

  7. 使用Spire组件抛出异常The type initializer for 'spr857' threw an exception

    使用Spire组件抛出异常The type initializer for 'spr857' threw an exception 我使用免费的Spire.Xls组件尝试去转换Excel文档到PDF文 ...

  8. (转载)基于LBS地图的开发,满足地图上有头像的需求

    最近做的项目主要是LBS这块 主打成员定位功能 我们的UI设计是这样的 乍一看上去是挺好挺美观的 不同的人会显示不同的头像 可是当人扎堆的时候 问题就来了 当人多的时候(例如上图所示) 地图滑动起来就 ...

  9. 尽量使用translate而不是改变top/left进行动画(翻译)

    前言 本文翻译自 Why Moving Elements With Translate() Is Better Than Pos:abs Top/left,本文有改动,添加了一些作者自己的理解,不当之 ...

  10. 1Z0-053 争议题目解析175

    1Z0-053 争议题目解析175 考试科目:1Z0-053 题库版本:V13.02 题库中原题为: 175.You are peer reviewing a fellow DBAs backup p ...