浅谈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 相关文章推荐
游戏人文件夹程序 ver 3.0
Jul 14 Javascript
分享几个超级震憾的图片特效
Jan 08 Javascript
JS操作数据库的实例代码
Oct 17 Javascript
jQuery使用addClass()方法给元素添加多个class样式
Mar 26 Javascript
jQuery选择器源码解读(一):Sizzle方法
Mar 31 Javascript
详解JavaScript中数组和字符串的lastIndexOf()方法使用
Mar 13 Javascript
使用JQuery中的trim()方法去掉前后空格
Sep 16 Javascript
关于javascript作用域的常见面试题分享
Jun 18 Javascript
基于Vue实现关键词实时搜索高亮显示关键词
Jul 21 Javascript
了解JavaScript中的选择器
May 24 Javascript
Vue中常用rules校验规则(实例代码)
Nov 14 Javascript
浅谈Vue3.0新版API之composition-api入坑指南
Apr 30 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
十大催泪虐心动漫电影,有几部你还没看
2020/03/04 日漫
PHP获取网站域名和地址的代码
2008/08/17 PHP
PHP MYSQL实现登陆和模糊查询两大功能
2016/02/05 PHP
php面向对象重点知识分享
2019/09/27 PHP
解决laravel查询构造器中的别名问题
2019/10/17 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
浅谈JavaScript编程语言的编码规范
2011/10/21 Javascript
浅析hasOwnProperty方法的应用
2013/11/20 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
JS实现可关闭的对联广告效果代码
2015/09/14 Javascript
详解Javascript中prototype属性(推荐)
2016/09/03 Javascript
为你的微信小程序体积瘦身详解
2017/05/20 Javascript
nodejs创建简易web服务器与文件读写的实例
2017/09/07 NodeJs
js canvas实现写字动画效果
2018/11/30 Javascript
jQuery中使用validate插件校验表单功能
2019/05/24 jQuery
基于python的汉字转GBK码实现代码
2012/02/19 Python
python读写ini文件示例(python读写文件)
2014/03/25 Python
python实现爬虫统计学校BBS男女比例之数据处理(三)
2015/12/31 Python
python实现批量修改文件名代码
2017/09/10 Python
Python for循环生成列表的实例
2018/06/15 Python
python 读取竖线分隔符的文本方法
2018/12/20 Python
Python之虚拟环境virtualenv,pipreqs生成项目依赖第三方包的方法
2019/07/23 Python
pytorch动态网络以及权重共享实例
2020/01/06 Python
基于SpringBoot构造器注入循环依赖及解决方式
2020/04/26 Python
python设置表格边框的具体方法
2020/07/17 Python
使用CSS3制作一个简单的进度条(demo)
2017/05/23 HTML / CSS
美国最大的户外装备和服装购物网站:Backcountry
2019/10/15 全球购物
学前教育教师求职自荐信
2013/09/22 职场文书
《自然之道》教学反思
2014/02/11 职场文书
护士感人事迹
2014/05/01 职场文书
超市商业计划书
2014/05/04 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
2015年房地产个人工作总结
2015/05/26 职场文书
公司员工培训管理制度
2015/08/04 职场文书
使用pipenv管理python虚拟环境的全过程
2021/09/25 Python
Python matplotlib绘制条形统计图 处理多个实验多组观测值
2022/04/21 Python