angularjs2 简单使用起始篇

Posted mangues

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了angularjs2 简单使用起始篇相关的知识,希望对你有一定的参考价值。

angularjs2 简单使用起始篇—基于一个小例子(一)

本篇文章基于angularjs 2.3.0

angularjs2 是不同于anjularjs ,前者是基于组件的,而后者着是基于demo的。angularjs2 比较像RN。组件化是前端的一个趋势,这种方式类似于android的bar,listview等组件,可以直接调用显示,开发者写好组件后,只要关心数据,样式,其他会有组件自动填充完成。因为内容比较多,会分成3篇文章来写。

一、环境

1.需要安装node,具体怎么安装去百度,谷歌。
2.编辑器 建议使用atom。需要安装两个插件

3.设备,我是用的mac,也可以用pc

二、开始

1.利用《快速起步》种子

    git clone https://github.com/angular/quickstart.git  quickstart
    cd quickstart
    npm install
    npm start

npm install 是安装依赖
npm start 运行项目

2.直接下载简单的项目文件,没有其他任何前端工程化的文件,就是简单的编程文件,不过需要安装http-server

建议第一种方式,本篇文章也是按照第一种方式讲解

三、分析

我们将按照这两部分来分成两个组件header和listview

四、项目结构

1.index.html 项目的起始页,我们放入一些bootstrap的样式文件

  <link rel="stylesheet" href="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/css/bootstrap.min.css">
    <script src="http://cdn.static.runoob.com/libs/jquery/2.1.1/jquery.min.js"></script>
    <script src="http://cdn.static.runoob.com/libs/bootstrap/3.3.7/js/bootstrap.min.js"></script>
    <link href="http://cdn.bootcss.com/font-awesome/4.6.3/css/font-awesome.min.css" rel="stylesheet">
   <link href="http://cdn.bootcss.com/animate.css/3.5.2/animate.min.css" rel="stylesheet">

2.app文件夹中 是最主要的

header的代码:

1.先写模板就是头部的html代码,类似于android的xml,就是一些简单的html代码,基于bootstrap来写的,样式并不是我们这篇文章考虑的重点

header.html

<div class="top">
<nav class="navbar navbar-default" role="navigation" >
    <div class="container-fluid">
    <div class="navbar-header">
        <button type="button" class="navbar-toggle" data-toggle="collapse"
                data-target="#example-navbar-collapse">
            <span class="sr-only">切换导航</span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
            <span class="icon-bar"></span>
        </button>
        <a class="navbar-brand" href="#">简云</a>
    </div>

    <div class="collapse navbar-collapse" id="example-navbar-collapse">
    <div>
        <form class="navbar-form navbar-left" role="search" action="http://www.">
            <div class="form-group">
                <input type="text" class="form-control" placeholder="Search">
            </div>

        </form>
    </div>
    <ul class="nav navbar-nav navbar-right">
        <li><a href="#"><span class="glyphicon glyphicon-user"></span>登录</a></li>
        <li><a href="#"><span class="glyphicon glyphicon-log-in"></span>注册</a></li>
    </ul>
    </div>
    </div>
</nav>

2.现在来写组件代码,组件主要就是来和html定义的模板进行交互的,这样我们以后只要和组件进行交互,就行了,不在考虑模板,模板定义好之后可以高度复用。

header.component.ts

import  Component, Input  from '@angular/core';
@Component(
  moduleId: module.id,
  selector: 'mangues-header',
  templateUrl: './header.html'
)
export class HeaderComponent 

templateUrl:对应的参数就是这个组件绑定 header.html 模板,类似于android的自定义控件绑定xml,这里使用url应用的文件(我们模板文件写在单独文件中的,这里也可以直接用template参数对应模板文件字符串)
selector:对应的参数就是 对外调用的标签,外部引用可以通过这个标签来调用,类似于android xml里面调用自定义控件
moduleId:固定写法,为了templateUrl 能用相对地址,不然引用header.html就需要从app文件夹开始

3.组件需要使用,首先需要注册进系统里,不然无法调用。

import  NgModule       from '@angular/core';
import  BrowserModule  from '@angular/platform-browser';
import  FormsModule    from '@angular/forms';

import  AppComponent   from './app.component';
import  HeaderComponent  from './component/header/header.component';
import  ListViewComponent  from './component/listview/listview.component';

@NgModule(
  imports: [
    BrowserModule,
    FormsModule
  ],
  declarations: [
    AppComponent,
    HeaderComponent,
    ListViewComponent,
  ],
  bootstrap: [ AppComponent ]
)
export class AppModule  

先引入header.component.ts 中的HeaderComponent类
import HeaderComponent from ‘./component/header/header.component’;

然后注册declarations中就可以使用了

4.使用自定义的组件

看 app.component.ts组件

import  Component  from '@angular/core';
@Component(
  selector: 'my-app',
     template: `<mangues-header></mangues-header>
                <mangues-listview></mangues-listview>`,
)
export class AppComponent  

为什么可以显示呢,上面说过selector对应的参数是为了外部标签调用,我们在index.html中定义了一个标签,所以项目index.html 开启的时候会因为my-app标签引用app.component.ts组件,因为上面已经在header.component.ts组件中定义了mangues-header,所以这里的template 对应的模板标签就会直接调用header.component.ts组件 也就调用了header.html 模板。

  <my-app>Loading AppComponent content here ...</my-app>

listview 这边的显示和header一样 就不重复写了,可以直接看代码。

五、项目运行

如果在开始阶段 下载运行了快速起步,就可以直接改代码,浏览器中会自动改变
如果没有,或者已经关闭终端,可以npm start重新运行

npm start

下一篇文章:anjularjs2 header的数据绑定,模板当然是样式自定义,数据外部传入了,不然不如直接写html操作DOM呢。从外部改变title和登录 注册的url。

github下载下载的demo直接到根目录执行

npm install
npm start

以上是关于angularjs2 简单使用起始篇的主要内容,如果未能解决你的问题,请参考以下文章

angularjs2 学习笔记 服务

angularjs2 学习笔记 路由

Angularjs2 - 在应用程序启动之前预加载服务器配置[重复]

如何在 AngularJS2“final”中对组件进行单元测试?

angularjs2 外部设置组件header的属性

原创-angularjs2不同组件间的通信