浅谈Angular7 项目开发总结


Posted in Javascript onDecember 19, 2018

由于公司需要,开始学习angular,这个传闻中学习曲线及其陡峭的前端框架,并开始写第一个用angular的项目,截止今天初步完成现有需求,顾在此做一次遇到问题的总结,以便知识的掌握。

一、在angular项目中,如何使用锚点

在常规项目中,使用锚点用来做"智能"定位效果时,只需这么写:

<a href="#test" rel="external nofollow" >走你</a>
<div id="test">被定位区域</div>

但是在ng中,a标签中的href属性会自动的使用路由机制,最后的结果会被当成跳转的路由地址,具体的原因有待进一步考证,反正最后的结果就是上面的写法不生效,生效写法:

<a router="./" [fragment]="test">来吧</a>
<div id="test">被定位区域</div>

二、组件中修改第三方UI库样式

之前中vue写项目的时候,会遇到组件风格与第三方UI库冲突的现象,用过vue的同学都了解,在vue中有个scoped这个作用域的概念,如果要自定义与UI库冲突的地方有以下几种方式:

  • 在App.vue文件中声名样式;
  • 在子组件中添加多个style标签;
  • 使用深度作用选择器—— '>>>';
    • scss:.a /deep/ .b {...}
    • stylus: .a <<< .b{...}

那么在ng中个什么情况呢?首先需要了解ng渲染组件的机制,在ng中有一个东东叫showDOM;

解决方法:

在组件的.ts文件中

import { ViewEncapsulation } from '@angular/core';

@Commpoent({
  ...
  encapsulation: ViewEncapsulation.None
})

如果这样还是覆盖不了,那就查查类名拼写啊、层级嵌套啊、和类名的位置,我曾经就是因为把类名加的位置不对导致样式不生效的,大家不要学我哟!

三、元素上添加自定义属性

vue写法

<li v-for="(item,index) in list" :index="index">{{item.title}}</li>

ng写法

<li *ngFor="let item of list; index as i" [attr.index]="i"></li>

四、不使用npm引入第三方插件的用法之一

很多时候,我们需要用的某个插件可能在npm上没有,或者由于各种版本问题,导致使用的时候会有乱七八糟的bug,找原因,去解决,费时费力;

用了ng才能明白,以前用vue的时候是多么的幸福,使用vue常规业务在国内基本都是即搜即用,ng就。。。嗯,学英语ing~。
解决方案:

  • 将如要用到的插件放入assets文件夹中;
  • 在根目录下的index.html中script引入;
  • 在应用的组件中使用(window as any).**;

ps: angular.json等其他方式也是可以的的,看各自实际情况而定;

五、监听滚动事件

使用Hostlistener`

@HostListener('window:scroll', ['$event'])
 public onScroll = () => {
  do something
 }

使用fromEvent

import { fromEvent } from 'rxjs'
 import { debounceTime } from 'rxjs/operators'
 export class Test{
  subscribeSoll;
  this.subscribeScoll = fromEvent(window,'scroll')
    .pipe(debounceTime(1000))
    .subscribe( (event) => {
      console.log(event);
    })
 }

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
xml和web特殊字符
Apr 28 Javascript
优化innerHTML操作(提高代码执行效率)
Aug 20 Javascript
jquery单行文字向上滚动效果示例
Mar 06 Javascript
BootStrap智能表单实战系列(十一)级联下拉的支持
Jun 13 Javascript
详细分析Javascript中创建对象的四种方式
Aug 17 Javascript
ros::spin() 和 ros::spinOnce()函数的区别及详解
Oct 01 Javascript
jQuery中get方法用法分析
Dec 07 Javascript
Angular2里获取(input file)上传文件的内容的方法
Sep 05 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
Sep 20 Javascript
vue中如何实现后台管理系统的权限控制的方法示例
Sep 19 Javascript
Vue resource三种请求格式和万能测试地址
Sep 26 Javascript
vue实现节点增删改功能
Sep 26 Javascript
mockjs+vue页面直接展示数据的方法
Dec 19 #Javascript
vue项目搭建以及全家桶的使用详细教程(小结)
Dec 19 #Javascript
vue使用Google地图的实现示例代码
Dec 19 #Javascript
JS实现获取自定义属性data值的方法示例
Dec 19 #Javascript
vue动态绑定class选中当前列表变色的方法示例
Dec 19 #Javascript
js指定日期增加指定月份的实现方法
Dec 19 #Javascript
动态内存分配导致影响Javascript性能的问题
Dec 18 #Javascript
You might like
php文件上传的例子及参数详解
2013/12/12 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
firefox下input type=&quot;file&quot;的size是多大
2011/10/24 Javascript
javascript分页代码(当前页码居中)
2012/09/20 Javascript
JS日期和时间选择控件升级版(自写)
2013/08/02 Javascript
简介JavaScript中Boolean.toSource()方法的使用
2015/06/05 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
文件上传插件SWFUpload的使用指南
2016/11/29 Javascript
AngularJS学习第二篇 AngularJS依赖注入
2017/02/13 Javascript
vue实现点击图片放大效果
2017/08/15 Javascript
node.js实现的装饰者模式示例
2017/09/06 Javascript
vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)
2019/08/12 Javascript
基于Layui自定义模块的使用方法详解
2019/09/14 Javascript
[03:31]DOTA2英雄基础教程 大地之灵
2013/12/17 DOTA
简单谈谈python中的Queue与多进程
2016/08/25 Python
Python抓取框架Scrapy爬虫入门:页面提取
2017/12/01 Python
微信跳一跳python代码实现
2018/01/05 Python
Python Pandas 转换unix时间戳方式
2019/12/07 Python
pytorch torchvision.ImageFolder的用法介绍
2020/02/20 Python
使用Python打造一款间谍程序的流程分析
2020/02/21 Python
Python多线程:主线程等待所有子线程结束代码
2020/04/25 Python
TensorFlow的环境配置与安装教程详解(win10+GeForce GTX1060+CUDA 9.0+cuDNN7.3+tensorflow-gpu 1.12.0+python3.5.5)
2020/06/22 Python
Python基于字典实现switch case函数调用
2020/07/22 Python
数据库的约束含义
2012/09/09 面试题
某同学的自我鉴定范文
2013/12/26 职场文书
中专生职业生涯规划书范文
2013/12/29 职场文书
监理资料员岗位职责
2014/01/03 职场文书
超市理货员岗位职责
2014/07/04 职场文书
陈安之励志演讲稿
2014/08/21 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
创先争优承诺书
2015/01/20 职场文书
小学音乐教师个人工作总结
2015/02/05 职场文书
感恩节寄语2015
2015/03/24 职场文书
介绍信格式样本
2015/05/05 职场文书
早安问候语大全
2015/11/10 职场文书
Python提取PDF指定内容并生成新文件
2021/06/09 Python