博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
9.模块
阅读量:731 次
发布时间:2019-03-21

本文共 2951 字,大约阅读时间需要 9 分钟。

文章目录

概念

把一些公共的功能单独抽离成一个文件作为一个模块。

模块里的变量、函数、类等默认是私有的,如果要在外部访问,需要通过export暴露模块里面的数据,然后外部文件通过import引入模块就可以使用模块里的数据。

模块的基础:导入导出

方式1:一个个导出

导出

export let dbUrl = '暴露数据';export function getData():any {    console.log('暴露方法: ');}export function save() {    console.log('我是save方法');}

导入

import { dbUrl, getData, save } from './modules/db'console.log('dbUrl: ', dbUrl);getData()

方式2:统一导出

导出

let dbUrl = '暴露数据';export function getData():any {    console.log('暴露方法: ');}function save() {    console.log('我是save方法');}export {dbUrl, getData, save}

导入

import { dbUrl, getData, save } from './modules/db'console.log('dbUrl: ', dbUrl);getData()

方式3: 默认导出(export defult)

一个模块只能有一个default导出。 需要使用特殊的导入形式

导出

let dbUrl = '暴露数据';function getData():any[] {    console.log('暴露方法: ');}function save() {    console.log('我是save方法');}export default getData;

导入

import getData from './modules/db'getData()

其他技巧

导入后重命名

import { dbUrl, getData as get, save } from './modules/db'get()

注:import在浏览器中无法直接执行,需要借助webpack,测试时可以在vs code编译后这样执行$ node index.js

案例

使用模块重新处理操作数据库的底层库,参考mongodb的封装方法

目录

modules	db.tsmodel	user.ts	article.tsindex.htmlindex.ts

db.ts

interface DBI
{ add(info:T):boolean; update(info:T, id:number):boolean; delete(id:number):boolean; get(id:number):any[];}// 定义一个mysql数据库的类export class MysqlDb
implements DBI
{ add(info: T): boolean { console.log('info: ', info); return true; } update(info: T, id: number): boolean { throw new Error("Method not implemented."); } delete(id: number): boolean { throw new Error("Method not implemented."); } get(id: number): any[] { let list = [{title: 'xxx'}] return list }}// 定义一个操作Mssql数据库的类export class MsSqlDb
implements DBI
{ add(info: T): boolean { console.log('info: ', info); return true; } update(info: T, id: number): boolean { throw new Error("Method not implemented."); } delete(id: number): boolean { throw new Error("Method not implemented."); } get(id: number): any[] { let list = [{title: 'xxx'}] return list }}

user.ts

import { MysqlDb } from '../modules/db'// 定义数据库的映射class UserClass{    username: string | undefined;    password: string | undefined;}let UserModel = new MysqlDb
()export { UserClass, UserModel}

article.ts

import { MysqlDb } from '../modules/db'// 定义数据库的映射class UserClass{    username: string | undefined;    password: string | undefined;}let UserModel = new MysqlDb
()export { UserClass, UserModel}

index.ts

import { UserClass, UserModel } from './model/user'import { ArticleClass, ArticleModel } from './model/article'/* 操作用户表 */let u = new UserClass()u.username = '张三2'u.password = '1234'UserModel.add(u);let ulist = UserModel.get(1)console.log('ulist: ', ulist);/* 操作文章表 */let alist = ArticleModel.get(1);console.log('alist: ', alist);

转载地址:http://gqbgz.baihongyu.com/

你可能感兴趣的文章