先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新Web前端全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上前端开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024c (备注前端)
正文
该树结构的父子/兄弟关系其实非常容易看出来。
接口:TreeModel Interface
interface TreeModel {
value: string | RenamableNode;
id: string | number;
children?: Array;
loadChildren?: ChildrenLoadingFunction;
settings?: TreeModelSettings;
}
结合一下TreeModel接口,树的结构大概是下面这样子:
public tree: TreeModel = {
value: ‘Programming languages by programming paradigm’,
id: 1,
children: [
{
value: ‘Object-oriented programming’,
id: 2,
children: [
{value: ‘Java’, id: 3},
{value: ‘C++’, id: 4},
{value: ‘C#’, id 5},
]
},
{
value: ‘Prototype-based programming’,
id: 6,
children: [
{value: ‘JavaScript’, id: 7},
{value: ‘CoffeeScript’, id: 8},
{value: ‘Lua’, id: 9},
]
}
]
};
在我所做的那一Part里面,ng2-tree树结构节点的主要三个属性是
-
value
-
id
-
children
使用ng2-tree:
<tree
[tree]=“tree”
[settings]=“settings”
(nodeRemoved)=“handleRemoved($event)”
(nodeRenamed)=“handleRenamed($event)”
(nodeSelected)=“handleSelected($event)”
(nodeMoved)=“handleMoved($event)”
(nodeCreated)=“handleCreated($event)”
(nodeExpanded)=“handleExpanded($event)”
(nodeCollapsed)=“handleCollapsed($event)”
(loadNextLevel)=“handleNextLevel($event)”>
tree,settings,nodeSelected和nodeExpanded等这些,就是可以在ng2-tree的template模板里面使用的一些API吧。
demo实例:
<tree [tree]=“treeNodes” [settings]=“treeSettings” (nodeSelected)=“showNgTwoTree( e v e n t ) " ( n o d e E x p a n d e d ) = " o n N o d e E x p a n d e d ( event)" (nodeExpanded)="onNodeExpanded( event)"(nodeExpanded)="onNodeExpanded(event)” (nodeCollapsed)=“onNodeCollapsed($event)”>
nodeSelected等这些的使用,具体看项目的功能需求。
=============================================================================
其实ngx-treeview也和ng2-tree差不多,换汤不换药。使用上仅是在一些特性,功能,属性这些作了一些文章。
详细的介绍都可以去其npm上查看浏览。
先看看ngx-treeview的结构是怎么样:
const category = new TreeviewItem({
text: “IT”,
value: 9,
children: [
{
text: “Programming”,
value: 91,
children: [
{
text: “Frontend”,
value: 911,
children: [
{ text: “Angular 1”, value: 9111 },
{ text: “Angular 2”, value: 9112 },
{ text: “ReactJS”, value: 9113 },
],
},
{
text: “Backend”,
value: 912,
children: [
{ text: “C#”, value: 9121 },
{ text: “Java”, value: 9122 },
{ text: “Python”, value: 9123, checked: false },
],
},
],
},
{
text: “Networking”,
value: 92,
children: [
{ text: “Internet”, value: 921 },
{ text: “Security”, value: 922 },
],
},
],
});
每个node主要有三个属性
-
text
-
value
-
children
具体是什么就不多说了~
也可以单独创建一个节点,再把这个节点添加到某一节点的children数组里面:
const vegetableCategory = new TreeviewItem({
text: “Vegetable”,
value: 2,
children: [
{ text: “Salad”, value: 21 },
{ text: “Potato”, value: 22 },
],
});
vegetableCategory.children.push(
new TreeviewItem({ text: “Mushroom”, value: 23, checked: false })
);
再看看treeviewItem都有些什么东西可以用:
demo示例:
config = TreeviewConfig.create({
hasAllCheckBox:true,
hasFilter:true,
hasCollapseExpand:true,
maxHeight:400;
})
<ngx-treeview class=“ngx-tree” [items]=‘items’ [config]=“config” (selectedChange)=“onSelectedChange( e v e n t ) " ( f i l t e r C h a n g e ) = " o n F i l t e r C h a n g e ( event)" (filterChange)="onFilterChange( event)"(filterChange)="onFilterChange(event)”>
简单的使用就是这样子:
-
数据放到items里;config是ngx-treeview的配置,可以自行配置其是否有checkbox,是否有过滤查找,最大高度是多少等等
-
主要使用的属性,text,value,children,checked,collapsed和disabled。分别对应文本,值,子节点,是否被点击,是否展开,是否禁用。
========================================================================
如果要改造的话,就面临几个需要解决的问题:
-
要把ngx-treeview的原生样式改得与原本的样式一样,需要统一。
-
ngx-treeview本质是个复选框checkbox。然而使用树形菜单,当然是要单选框radio。总不可能:点击nodeOne,响应nodeOne的内容;再点击nodeTwo,响应nodeOne和nodeTwo的内容吧!所以问题是怎么把checkbox改成radio.
-
ngx-treeview一开始Show出来后,每个node都是被选中的(总不能刚显示出菜单,就响应所有的内容吧!我压根都没有选过哪个菜单!)。所以要限制其一开始都是不选中的状态。
针对样式,我们可以通过F12,去看其已有样式是怎么样。再用 ::ng-deep 这些方法去做调整。
最终也是能把字体、颜色、间距padding和margin、以及小箭头这些的样式都改得一模一样。
所以这不是一个太大的问题。
css
1,盒模型
2,如何实现一个最大的正方形
3,一行水平居中,多行居左
4,水平垂直居中
5,两栏布局,左边固定,右边自适应,左右不重叠
6,如何实现左右等高布局
7,画三角形
8,link @import导入css
9,BFC理解
js
1,判断 js 类型的方式
2,ES5 和 ES6 分别几种方式声明变量
3,闭包的概念?优缺点?
4,浅拷贝和深拷贝
5,数组去重的方法
6,DOM 事件有哪些阶段?谈谈对事件代理的理解
7,js 执行机制、事件循环
8,介绍下 promise.all
9,async 和 await,
10,ES6 的 class 和构造函数的区别
11,transform、translate、transition 分别是什么属性?CSS 中常用的实现动画方式,
12,介绍一下rAF(requestAnimationFrame)
13,javascript 的垃圾回收机制讲一下,
14,对前端性能优化有什么了解?一般都通过那几个方面去优化的?
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
ranslate、transition 分别是什么属性?CSS 中常用的实现动画方式,
12,介绍一下rAF(requestAnimationFrame)
13,javascript 的垃圾回收机制讲一下,
14,对前端性能优化有什么了解?一般都通过那几个方面去优化的?
[外链图片转存中…(img-R3p3wWeH-1713282871303)]
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024c (备注前端)
[外链图片转存中…(img-M7Skihk6-1713282871304)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!