Angular 开发前的注意事项

写在前面

是Angular 不是angular.js!!!
本文只是列举一些ng开发中的注意事项,有一些是自己遇到的坑,总结一下分享…

构建项目

  • 安装 npm install -g @angular/cli
  • 创建项目 ng new name
  • 安装这一块官网上面写的很详细了Angular安装起步

项目运行起来

  • ng serve 使用 http://localhost:4200访问
  • ng serve --port 端口号 自定义端口号访问
  • ng serve --host 本机IP 使用本机IP访问,以供局域网中设备访问

配置.angular-cli.json文件,引用其它js框架,css框架,或者使用less/sass语法

{
  "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
  "project": {
    "name": "demo1"
  },
  "apps": [
    {
      "root": "src",
      "outDir": "dist",
      "assets": [
        "assets",
        "favicon.ico"
      ],
      "index": "index.html",
      "main": "main.ts",
      "polyfills": "polyfills.ts",
      "test": "test.ts",
      "tsconfig": "tsconfig.app.json",
      "testTsconfig": "tsconfig.spec.json",
      "prefix": "app",
      //样式放这里面,路径引用
      "styles": [
        //这里喔是采用less,所以整个项目都用less来写样式
        "styles.less",
        //插入需要引用的样式文件
        "../node_modules/bootstrap/dist/css/bootstrap.min.css",
        "assets/bootstrap-datetimepicker/bootstrap-datetimepicker.min.css"
      ],
      "scripts": [
        //插入需要引用的js库
        "../node_modules/jquery/dist/jquery.min.js",
        "../node_modules/bootstrap/dist/js/bootstrap.min.js",
        "assets/bootstrap-datetimepicker/bootstrap-datetimepicker.min.js"
      ],
      "environmentSource": "environments/environment.ts",
      "environments": {
        "dev": "environments/environment.ts",
        "prod": "environments/environment.prod.ts"
      }
    }
  ],
  "e2e": {
    "protractor": {
      "config": "./protractor.conf.js"
    }
  },
  "lint": [
    {
      "project": "src/tsconfig.app.json",
      "exclude": "**/node_modules/**"
    },
    {
      "project": "src/tsconfig.spec.json",
      "exclude": "**/node_modules/**"
    },
    {
      "project": "e2e/tsconfig.e2e.json",
      "exclude": "**/node_modules/**"
    }
  ],
  "test": {
    "karma": {
      "config": "./karma.conf.js"
    }
  },
  "defaults": {
    //这里规定使用何种css预处理器,我这里使用的less,这样全局的文件就需要使用less,貌似我用less+css其它会报错
    "styleExt": "less",
    "component": {}
  }
}

使用双向数据绑定,以及设置路由之后刷新当前页面路由指向错误

app.module.ts文件引入如下代码
import { FormsModule } from '@angular/forms';
import { PathLocationStrategy, LocationStrategy, HashLocationStrategy } from '@angular/common';
然后放入imports中就可以了,如果没有设置FormsModule是没法使用[(ngModel)]的,另外在input中使用双向绑定,如果不给改input标签添加name属性是无法启动双向绑定,还会报错

type="text" name="title" [(ngModel)]="title">

PathLocationStrategy, LocationStrategy, HashLocationStrategy用于解决在路由页面刷新出错的问题

index.html修改标签

这可以说是遇到的第一个坑,写完代码之后发布(发布方法写在后面),然后访问链接,提示路径错误,只需要看发布之后的index.html大家就懂了


<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Demo1title>
  //问题就出在这里,只需要改成 <base href="./">就OK
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
head>
<body>
  <app-root>app-root>
<script type="text/javascript" src="inline.bundle.js">script><script type="text/javascript" src="polyfills.bundle.js">script><script type="text/javascript" src="styles.bundle.js">script><script type="text/javascript" src="vendor.bundle.js">script><script type="text/javascript" src="main.bundle.js">script>body>
html>

来鼓捣点东西吧

src/app目录写你的代码,按照官网的说法src/assets目录应该就是存放静态资源的位置,

这里提及我遇到的一个坑,开开心心的写好了代码,浏览器跑起来,结果IE gg,存在着兼容兼容问题,需要安装babel-polyfill,解决方法如下

  • npm install babel-polyfill --save-dev
  • 进入src/prolyfills.ts
  • 引入这个模块 import "babel-polyfill"

Angular 开发前的注意事项_第1张图片

发布

  • ng build 他会生成一些map文件,导致项目资源大
  • ng build --prod 不会生成map文件,上线时还是使用这个吧,不过这里有个注意事项,下面将会说明
    下图对比两者
    Angular 开发前的注意事项_第2张图片

ng build --prod 报错处理

  • 检查自己的代码是否有误,html中是否引入了ts中未声明的变量,这些在项目调试以及ng build中都不会报错(大坑啊~)
  • 删除ts中除了 constructor 里面的 private 声明
  • 如果出现 ERROR in ./src/main.ts
    Module not found: Error: Can't resolve
    执行下面的操作
  • 第一步 rm -rf node_modules/
  • 第二步 npm install --save-dev @angular/cli@latest
  • 第三步 npm install

开发前的事项就说到这里了,如果有补充或者遗漏的,欢迎留言指出~ts的语法很棒棒哒

你可能感兴趣的:(Angular)