浅谈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 相关文章推荐
javascript 当前日期加(天、周、月、年)
Aug 09 Javascript
如何使用Javascript获取距今n天前的日期
Jul 08 Javascript
javascript 判断整数方法分享
Dec 16 Javascript
JS实现向表格行添加新单元格的方法
Mar 30 Javascript
微信JSSDK上传图片
Aug 23 Javascript
jQuery实现的个性化返回底部与返回顶部特效代码
Oct 30 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
Jun 03 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
Jul 14 Javascript
使用jQuery.Pin垂直滚动时固定导航
May 24 jQuery
vue组件name的作用小结
May 23 Javascript
微信小程序如何获取群聊的openGid以及名称详解
Jul 17 Javascript
vue实现轮播图帧率播放
Jan 26 Vue.js
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实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
php中最简单的字符串匹配算法
2014/12/16 PHP
使用PHP similar text计算两个字符串相似度
2015/11/06 PHP
PHP简单计算两个时间差的方法示例
2017/06/20 PHP
JavaScript利用append添加元素报错的解决方法
2014/07/01 Javascript
利用原生JavaScript获取元素样式只是获取而已
2014/10/08 Javascript
javascript实现客户端兼容各浏览器创建csv并下载的方法
2015/03/23 Javascript
详细讲解vue2+vuex+axios
2017/05/27 Javascript
shiro授权的实现原理
2017/09/21 Javascript
详解如何制作并发布一个vue的组件的npm包
2018/11/10 Javascript
详解Webstorm 下的Angular2.0开发之路(图文)
2018/12/06 Javascript
JavaScript中import用法总结
2019/01/20 Javascript
详解JavaScript中的函数、对象
2019/04/01 Javascript
微信小程序云开发如何实现数据库自动备份实现
2019/08/16 Javascript
原生js实现商品筛选功能
2019/10/28 Javascript
vue中keep-alive内置组件缓存的实例代码
2020/04/16 Javascript
基于aotu.js实现微信自动添加通讯录中的联系人功能
2020/05/28 Javascript
详解Vue.js3.0 组件是如何渲染为DOM的
2020/11/10 Javascript
[00:16]热血竞技场
2019/03/06 DOTA
python自定义类并使用的方法
2015/05/07 Python
教大家使用Python SqlAlchemy
2016/02/12 Python
Python实现冒泡排序的简单应用示例
2017/12/11 Python
python使用response.read()接收json数据的实例
2018/12/19 Python
Python中如何导入类示例详解
2019/04/17 Python
Python 生成器,迭代,yield关键字,send()传参给yield语句操作示例
2019/10/12 Python
win10下安装Anaconda的教程(python环境+jupyter_notebook)
2019/10/23 Python
python实现的分层随机抽样案例
2020/02/25 Python
加拿大知名的国际儿童品牌:Hatley
2016/11/09 全球购物
英国计算机商店:Technextday
2019/12/28 全球购物
高一物理教学反思
2014/01/24 职场文书
个性车贴标语
2014/06/24 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
学术会议通知
2015/04/15 职场文书
2016年村党支部公开承诺书
2016/03/24 职场文书
数据库连接池
2021/04/06 MySQL
springboot读取resources下文件的方式详解
2022/06/21 Java/Android