1.搭建Angular2项目
简述:搭建angular2的开发环境,网上已经有许多教程,不过都是window系统下的教程,我本人使用的是linux系统,搭建环境的过程也稍微比前者麻烦了一点,可参考本人的另一篇文章Linux系统下安装Angular2开发环境(Ubuntu16.0)
1. pakeage.json配置文件:是用来声明项目中使用的模块,在部署环境时,只要在pakeage所在的目录执行npm install命令就可以安装所有需要的模块了.
新建一个文件夹作为项目的根目录,整个项目的文件都存放在这个文件夹下面.在根目录下创建一个package.json的配置文件,该文件描述了npm包的所有相关信息,
包括作者,简介,包依赖,构建等信息,其格式必须是严格的json格式.
如下配置:
{
"name":"helloword", //不能在name中包含node,js等字样.
"version":"1.0.0",
"private":"false", //private设置为true时,npm会拒绝发布,这样会防止repositories不小心被发布出去.
"description":"hello-world project for angular 2",
"repository":"https://baidu.com/", //可选字段,用来指示代码存放的位置.
"bower":"^1.7.7", //可选,包管理器
"http-server":"^0.9.0", //可选,轻量的web服务器
"scripts":{
"server":"webpack-dev-server --inline --colors --progress --port 3000",
"start":"npm run server"
}, //可选,实际上指npm-scripts
"License":"MIT",
"devDependencies":{
"@types/core-js":"-0.9.34",
"ts-loader":"-1.2.0",
"typescript":"-2.0.0",
"webpack":"-1.12.9",
"webpack-dec-server":"-1.14.0"
},
"dependencies":{
"@angular/common": "^2.3.1", //angular 开发组提供的服务,管道和指令
"@angular/compiler": "^2.3.1", //angular的模板编译器,它会解析模板,并且把模板转换成代码,以供应用程序运行和渲染
"@angular/core": "^2.3.1",
"@angular/forms": "^2.3.1",
"@angular/http": "^2.3.1",
"@angular/platform-browser": "^2.3.1",
"@angular/platform-browser-dynamic": "^2.3.1",
"@angular/router": "^3.3.1",
"core-js": "^2.4.1",
"rxjs": "^5.0.1",
"ts-helpers": "^1.1.1",
"zone.js": "^0.7.2"
}
}
配置介绍:
scripts:可以使用调用一些脚本,或封装一些命令.
devDependencies:项目开发时所依赖的一些工具包.
dependencies:项目依赖的基础包.
1.1 http-server介绍:http-server是一个简单的零配置命令行http服务器,基于node.js。
在命令行的使用:$node http-server
在package.json中定义的方式:
"scripts":{
"start":"http-server -a 0.0.0.0 -p 8000",
}
其中的参数:
-p 端口号 (默认 8080)
-a IP 地址 (默认 0.0.0.0)
-d 显示目录列表 (默认 'True')
-i 显示 autoIndex (默认 'True')
-e or --ext 如果没有提供默认的文件扩展名(默认 'html')
-s or --silent 禁止日志信息输出
--cors 启用 CORS
-o 在开始服务后打开浏览器
-h or --help 打印列表并退出
-c 为 cache-control max-age header 设置Cache time(秒) ,禁用 caching, 则值设为 -1 .
2. tsconfig.json文件:放在根目录下,它配置了TypeScript编译器的编译参数.
如:
{
"compilerOptions": {
"baseUrl": "",
"declaration": false,
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"lib": ["es6", "dom"],
"mapRoot": "./",
"module": "es6",
"moduleResolution": "node",
"outDir": "../dist/out-tsc",
"sourceMap": true,
"target": "es5",
"typeRoots": [
"../node_modules/@types"
]
},
"compileOnSave":"true",
"exclude":["node_modules"]
}
其主要配置说明:
module:组织代码的方式,
target:编译目标平台(ES3,ES5,ES6)
sourceMap:把ts文件编译成.js文件时,是否生成对应的SourceMap文件.
emitDecoratorMetadata:让TypeScript支持为带有装饰器的声明生成元数据;
experimentalDecorators:是否启用实验性装饰器特性.
typeRoots:指定第三方库的类型定义文件的存放位置,推荐使用node_modules/@types文件夹.
3. 创建资源文件夹:到这一步,angular项目的基本配置文件创建完成,接下来在项目根目录下创建一个src文件夹,这个文件夹将存放项目的业务代码文件.
4. 创建组件相关文件:在src目录下创建app.component.ts文件以及模板文件app.component.html
如://app.component.ts
import { component } from '@angular/core';
@Component({
selector:'hello-world',
templateUrl:'src/app.component.html'
})
export class AppComponent{}
<--app.component.html-->
<h3>hello world</h3>
@Component装饰器用来告诉angular怎样创建这个组件,在组件中可以定义该组件的DOM元素名称,如selector:'hello-world',也可以用templateUrl引入模板.
这样在其他文件中就可以通过这个类名引用该组件.
5. 创建app.module.ts文件:在Angular应用中需要用模块来组织一些功能紧密相关的代码块,每个应用至少又一个模块.
如://app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component'
@NgModule({
declarations:[AppComponent],
imports:[BrowserModule],
boostrap:[AppComponent]
})
export class AppModule{}
说明:
@NgModule:用于定义模块用的装饰器.
declarations:导入模块以来的组件,指令等.
imports:用来导入当前模块所需的其他模块.几乎每个应用的跟模块都需要导入BrowserModule模块,它注册了一些关键的Provider和通用的指令,所以在imports属性中配置,作为
公用模块共全局调用.
bootstrap:标记出引导组件,在Angular启动应用时,将被标记的组件渲染到模板中.
6. 添加main.ts文件:Angular项目一般有一个入口文件,通过这个文件来串联起整个项目.
如://main.ts
import 'reflect-metadata';
import 'zone.js'
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule).catch(err=>console.error(err));
说明:要启动应用,主要依赖于Angular自带的platformBrowserDynamic函数和应用模块AppModule,通过调用platformBrowserDynamic().bootstrapModule()方法,来编译启动
AppModule模块.
7. 创建index.html宿主页面:
这里就不详细列出,主要是在body中添加<hello-world></hello-world>自定义标签,和引入js脚本<script src='bundle.js'></script>
其中的<hello-world></hello-world>标签就是在根组件app.component.ts中定义的selector.
8. 配置打包:在package.json文件的devDependencies{
...
"webpack":"~1.12.9",
"webpack-dev-server":"~1.14.0"
}
其中已经设置了打包工具webpack,webpack-dev-server是一个小型的服务器.开发时项目可以在这个服务器上运行.webpack也又自己的配置文件,在根目录下创建一个webpack.config
.js文件,其配置如下:
//webpack.config.js
var webpack=require('webpack');
var path=require('path');
module.exports={
entry:"./src/main,ts",
output:{
//制定打包后的输出文件名,这个文件需要被引入到index.html中
filename:"./bundle.js"
},
resolve:{
root:[path.join(__dirname,'src')],
extensions:['','.ts','.js']
}
module:{
loader:[
{test:/\.ts$/,loader:'ts-loader'}
]
}
};
其中主要的配置说明:
entry:页面入口文件配置,可以是一个或者多个入口文件
output:对应的输出项配置,输出入口文件编译后的文件.
resolve:定义了解析模块路径时的配置,常用的是extensions,可以用来指定模块的后缀,这样引入模块时就不需要写后缀,它会自动补全.
module.loaders:它告知webpack每一类文件都需要使用什么加载器来处理.
9. 最后:
1.在根目录下运行npm -install命令,npm会根据package.json配置文件,安装所有依赖包,安装的过程中,会自动创建一个node_modules文件夹,项目依赖的包都安装在其中.
2.运行npm start命令启动服务.
3.最后在浏览器中输入localhost:3000,可以看到项目启动后效果.
1.搭建Angular2项目的更多相关文章
- ng-cli搭建angular项目框架
原文地址 https://www.jianshu.com/p/0a8f4b0f29b3 环境准备 以下步骤都不需要事先创建文件夹,只是环境的准备过程,只有到需要搭建项目的时候才需要创建文件夹用来存放项 ...
- 一步一步使用ABP框架搭建正式项目系列教程之本地化详解
返回总目录<一步一步使用ABP框架搭建正式项目系列教程> 本篇目录 扯扯本地化 ABP中的本地化 小结 扯扯本地化 本节来说说本地化,也有叫国际化.全球化的,不管怎么个叫法,反正道理都是一 ...
- 零配置简单搭建SpringMVC 项目
SpringMVC是比较常用的JavaWeb框架,非常轻便强悍,能简化Web开发,大大提高开发效率,在各种Web程序中广泛应用.本文采用Java Config的方式搭建SpringMVC项目,并对Sp ...
- 关于使用ABP框架搭建的项目升级时需要注意的问题汇总
ABP理论学习总目录 一步一步使用ABP框架搭建正式项目系列教程 ABP之Module-Zero学习目录 本篇目录 说明 升级方法 问题_01:Log4Net导致编译不成功 2015/12/18更新 ...
- 3 分钟轻松搭建 Ruby 项目自动化持续集成
任何事情超过 90 秒就应该自动化,这是程序员的终极打开方式.Automating shapes smarter future. 这是一篇关于 Ruby 项目持续集成的快速指导教程,教大家如何使用 f ...
- 【maven】 在 MyEcplise上使用maven搭建Web项目
二.在My Ecplise上使用Maven搭建Web项目 1.新建一个maven项目 2.create一个简单的骨架 3.就像在ecplise中一样设置项目的以下配置 4.新创建的项目结构如下 ...
- 手把手教你如何搭建iOS项目基本框架
手把手教你如何搭建iOS项目基本框架 今天我们来谈谈如何搭建框架,框架需要做一些什么. 第一步:找到我们的目标我们的目标是让其他开发人员拿到手后即可写页面,不再需要考虑其他的问题. 第二步:我们需要做 ...
- 搭建PhoneCat项目的开发与测试环境
AngularJS官方网站提供了一个用于学习的示例项目:PhoneCat.这是一个Web应用,用户可以浏览一些Android手机,了解它们的详细信息,并进行搜索和排序操作. 获取源代码 PhoneCa ...
- 在vue-cli搭建的项目中增加后台mock接口
用vue-cli搭建一个前端开发环境确实是极其方便,在写前端代码肯定也是少不了需要调用后台提供的业务接口进行前后端交互,特别在敏捷开发中,前后端都要提前确定业务接口并进行打桩,在开发过程中基本是没有现 ...
随机推荐
- java基础知识—继承
1.不能被继承的父类成员: private成员.子类与父类不在同包,使用默认访问权限的成员.构造方法. 2.访问修饰符: 访问修饰符 本类 同包 子类 其它 ...
- blender 3d模型软件介绍(开源,免费,易用,强大)
关于BLENDER Blender是一个开源的多平台轻量级全能三维动画制作软件 具有建模,雕刻,绑定,粒子,动力学,动画,交互,材质,渲染,音频处理,视频剪辑以及运动跟踪,后期合成等等的一系列动画短片 ...
- python之常用模块学习
1.模块调用 import module from module import xx from module.xx.xx import xx as rename from module.xx.xx i ...
- 微信小程序 画布drawImage实现图片截取
大多数图片都大小不一,选择框的尺寸也是宽高相等的,就会有图片被压缩 解决方法: 1.可以使用画布对图片先进行截取,保存截取图片(用户自己选取,或者指定图片中心区域截取),但是对于多张图片手动截取,会影 ...
- javascript 字符串处理
---恢复内容开始--- 最近几次参加前端实习生招聘的笔试,发现很多笔试题都会考到字符串的处理,比方说去哪儿网笔试题.淘宝的笔试题等.如果你经常参加笔试或者也是一个过来人,相信你也跟我一样,发现字符串 ...
- Js修改input值后怎么同步修改绑定的v-model值
v-model只是一种语法糖,底层的方法还是去监听input事件.所以可以使用dispatchEvent事件给元素分配一个input事件,这样可以手动触发 inputElement 的 input 事 ...
- java基础继承
为什么用继承: 因为继承可以减少代码的冗余,提高维护性,为了从根本上解决存在的问题,就需要继承,就是将多个类当中的相同的地方提取到一个父类当中.父类更通用,子类更具体. 父类的继承格式 语法:publ ...
- PaperBye-一个可以自动改重的免费论文查重网站
推荐一个自动降重的免费论文查重软件,可自动降低论文重复率,一边修改,一边查重,免费查重网址:https://www.paperbye.com
- ajax成功返回结果字符串,对比不成功的解决办法
这是很久之前遇到的问题了,今天不小心又遇到了,总结了一下以前处理的办法. 废话不说,上代码: $.ajax({ url:"exit.do", data:{account:accou ...
- 手机连接fiddler之后,安装证书的方法
1. 手机设置锁屏密码2. 手机连接fiddler测试网络3. 手机访问 电脑IP:fiddler设置的端口号4. 点击页面中的链接,下载并安装证书,随意命名即可 (还不清楚证书有啥用,先记录下 ...