国军网及其新媒体平台
招人啦
点击下方图片,长按识别二维码
我们等你入列
???
——我们是谁——
党和军队的重要思想舆论阵地
中国人民解放军唯一新闻门户网站
中央重点新闻网站
——我们的队伍——
中国军网、国防部网
解放军报客户端
国防在线客户端
解放军报微博微信、中国军网微信
——我们的坐标——
北京西城
钓鱼台东
交通便利
风景优美
——我们的使命——
透过硝烟
俯瞰演兵场上的纵横驰骋
穿越风雪
记录边防哨所里的赤胆忠诚
航天城里,我们记录飞天奇迹
两会现场,我们传递最新政策
国庆阅兵,我们见证强军步伐
......
集结号已吹响
50个岗位,等你答“到!”
【招聘对象】
全国普通高等院校全脱产学习统招统分或经国家学历学位认证部门认可的境外高校的应届毕业生和社会在职人员。应届毕业生原则上硕士年龄不超过27岁(1994年7月以后出生)、博士年龄不超过35岁(1986年7月以后出生)。社会在职人员原则上年龄不超过35岁(1986年7月以后出生),中级专业技术职称人员和特殊人才引进人员原则上年龄不超过45周岁(1976年7月以后出生)。
【基本条件】
1.具有中华人民共和国国籍;
2.坚决执行党的基本路线和各项方针政策;
3.遵守国家法律法规,无违法犯罪行为记录;
4.具备报考岗位所需的专业技术、学历水平以及全面履行本岗位职责的能力;
5.团结同志、身体健康、作风正派、清正廉洁。
【报名时间】
截止至2021年9月2日17:00。在此期限外提交的报名信息,系统将不予受理。
【报名方式】
报考人员进入公招网(www.gongzhao.com.cn)查看招聘公告,并提交报考申请,进行网络报名。或者扫描以下二维码了解详情。
【招聘岗位】
岗位名称:网络和新媒体编辑(一)
所需人数:6人
1、学历专业
全日制一本(含)以上学历,35周岁以下。中国语言文学类、思想政治类、历史学类、图书出版类、传媒运营、新闻传播学类、哲学类、艺术学等相关专业优先。
2、素质要求
(1)热爱新闻事业,具备良好的政治和新闻敏感度;
(2)文字功底扎实,有较强的选题策划、信息整合能力;
(3)会基本的图片编辑和音视频剪辑处理;
(4)有新闻传播相关从业经验者优先录用;
(5)能胜任常年夜班值班工作。
3、岗位职责
策划、文字采集、文字编辑、撰稿。
岗位名称:网络和新媒体编辑(二)
所需人数:8人
1、学历专业
全日制本科(含)以上学历,35周岁以下。中国语言文学类、思想政治类、历史学类、图书出版类、传媒运营、新闻传播学类等相关专业。
2、素质要求
(1)热爱新闻事业,具备良好的政治和新闻敏感度;
(2)文字功底扎实,具备文字、图书类栏目的策划、编辑、包装能力,以及较强的选题策划、信息整合能力;
(3)会基本的图片编辑和音视频剪辑处理;
(4)具有思想政治教育、文化宣传、活动策划、网络评论、新闻采编等相关从业经验者优先录用;
(5)能胜任常年值班工作。
3、岗位职责
策划、文字采集、文字编辑、撰稿。
岗位名称:网络和新媒体编辑(三)
所需人数:15人
1、学历专业
全日制本科(含)以上学历,35周岁以下。中国语言文学类、思想政治类、历史学类、图书出版类、传媒运营、新闻传播学类、哲学类、艺术学等相关专业优先。
2、素质要求
(1)热爱新闻事业,具备良好的政治和新闻敏感度;
(2)文字功底扎实,具备文字、图书类栏目的策划、编辑、包装能力,以及较强的选题策划、信息整合能力;
(3)会基本的图片编辑和音视频剪辑处理;
(4)有新闻传播相关从业经验者优先录用;
(5)能胜任常年夜班值班工作。
3、岗位职责
策划、文字采集、文字编辑、撰稿。
岗位名称:数字报夜班编辑
所需人数:3人
1、学历专业
全日制本科(含)以上学历,35周岁以下,专业不限。
2、素质要求
(1)限男性,责任心强,认真仔细;
(2)退役军人优先录取,学历等条件可适当放宽。
3、岗位职责
主要负责解放军报、中国国防报的数字报制作工作,工作时间机动灵活,录取培训后即可上岗。
岗位名称:全栈工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,30周岁以下,985或者211学校毕业,计算机相关专业。
2、素质要求
(1)熟悉js、Java等语言;
(2)党员优先。
3、岗位职责
(1)主要负责小程序开发和维护,后台服务开发;
(2)新媒体技术应用与开发、交互产品设计与开发。
岗位名称:融合媒体工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,30周岁以下,985或者211学校毕业,设计相关专业。
2、素质要求
(1)有设计基础,能够进行视频号的维护,短视频和H5制作;
(2)党员优先。
3、岗位职责
新媒体技术应用与开发、交互产品设计与开发。
岗位名称:应用系统运维工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下,计算机相关专业。
2、素质要求
(1)有5年以上的Linux系统运维经验;熟悉主流互联网高可用架构,熟悉LVS、Nginx、Haproxy等组件的配置和优化;
(2)掌握一门以上编程语言(Shell/Go/Python等);
(3)熟悉CI/CD流程,熟练掌握Jenkins、Git、Maven等工具的使用,有自动化发布项目建设经验优先;
(4)熟悉zabbix、open-falcon等监控系统,可结合Prometheus与grafana等系统实现可视化监控;
(5)熟悉主流自动化运维工具,如Ansible、Saltstack,能够结合其他系统实现运维工具化和自动化;
(6)熟悉云计算技术领域,如容器、kubernetes、微服务等相关工具和技术,有项目容器化迁移与落地经验优先;
(7)具有很强的故障排查能力,学习能力强,有风险意识对生产环境有敬畏之心。
3、岗位职责
(1)负责业务系统的部署、监控、预案、故障排查与后续优化推进工作;
(2)完善应用的发布、扩容、降级、标准化等事务,提升业务健壮性保障服务SLA;
(3)负责设计实现与日常运维相关的自动化工具或系统,减少人工操作提高运维效率;
(4)参与自动化运维平台建设,踏实践行DevOps,全面提升运维效率;
(5)负责突发事件管理,问题跟踪与管理,提供运维报告。
岗位名称:云计算工程师
所需人数:2人
1、学历专业
全日制本科(含)以上学历,35周岁以下,计算机相关专业。
2、素质要求
(1)5年以上相关领域工作经验;
(2)了解国内外主流云服务IaaS、PaaS产品、架构和相关技术原理,如OpenStack、AWS、Azure、阿里云、腾讯云、云数据库、云存储、云网络等,有相关云产品使用及测试经验;
(3)有主导私有云平台(包括IaaS平和容器平台)的实施,交付工作经历,具备核心技术选型能力和解决核心技术问题能力;
(4)了解用户业务、应用服务架构,并且有相关整体部署、测试、运维经验;
(5)熟悉KVM虚拟化技术,了解VMware、Xen、Hyper-V等相关虚拟化技术;
(6)掌握OpenStack平台中云主机、云硬盘、云网络等技术原理;
(7)掌握docker、kubernetes,理解镜像和容器控制、调度、网络、存储的技术原理;
(8)掌握监控、日志、故障恢复与隔离等运维技术,具有一定的Linux操作系统开发和运维经验;
(9)掌握云数据库服务,云中间件服务核心技术,掌握MySQL、PostgreSQL,Oracle或者掌握Redis、Kafka、MQ中的一种或者多种;熟练使用git、jenkins、etcd等开源工具;
(10)熟悉敏捷开发;
(11)熟悉多种开源软件系统与工具的部署、组合使用,包括通用的高可用软件、测试工具、监控工具等;
(12)熟悉shell脚本编写,有相关测试、运维经验;
(13)熟悉云平台账户模块,安全模块,监控模块,计费计量模块等建设。
3、岗位职责
(1)负责云平台的整体规划、架构方案设计以及部署实施工作;
(2)负责整合云平台各模块的自动化部署,进行架构设计和现网落地,提高部署效率;
(3)负责云平台资源评估、资源分配、资源规划、性能调优等,保障系统的高可用性和可扩展性;
(4)主导重点任务和疑难问题的技术攻关。
岗位名称:机房硬件工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下,计算机、电力、自动化及相关专业。
2、素质要求
(1)持有电工专业或制冷或空调专业特种作业操作证;
(2)具有3年以上配电等相关岗位实际操作经验,熟悉艾默生、ABB、APC、伊顿等品牌UPS持续供电系统;
(3)具有较强的沟通协调能力、写作能力。
3、岗位职责
(1)进行机房规划与建设;
(2)进行机房配电系统、空调系统、消防系统的设计部署、管理维护;
(3)进行机房机柜、综合布线的建设维护,规划机柜设备分配;
(4)配合其他技术人员的工作,完成上级领导安排的其他工作。
岗位名称:资深网络工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下,计算机相关专业优先。
2、素质要求
(1)5年及以上相关工作经验;
(2)熟悉主流厂商(如H3C、CISCO、锐捷、华为)数据中心级交换机配置与维护;(如N7K、N9K、12800系列、12500系列等);
(3)熟悉Linux系统基础,熟悉shell脚本及TCP/IP/HTTP等网络协议;
(4)熟悉主流厂商云计算产品(如FusionCloud、H3Cloud、vsphere等),熟悉Openstack/Docker/Saltstack/Puppet等开源云计算产品之一;
(5)具备2年以上系统化运维超过50台集群或者大型分布式系统(计算/存储/网络)的建设/开发/运维背景者优先;
(6)具有良好的分析和解决问题能力且具备良好的编码和文档书写习惯;
(7)对云计算未来发展有一定的理解;善于主动思考和自我驱动,有很好的技术敏感度和风险识别能力;
(8)持有HCNP/H3CSE/CCNP/RCCP认证及以上级别数据中心方向认证,VCP认证,RHCE/RHCA认证优先考虑;
(9)热爱技术,有解决问题的热情和勇气;
(10)在困难面前,有亮剑的精神,有快速推进事情解决的能力;
(11)主动性强、积极性高,具有团队协助精神,能承受持续高强度工作,参与周末和夜间值班,愿意加班,能随时(包括深夜)返回单位现场处理生产事件。
3、岗位职责
(1)根据需要负责单位数据中心网络设备的选型,网络规划与建设;
(2)参与服务器选型,虚拟化建设,云计算的搭建;
(3)负责单位IDC机房网络设备和服务器的日常运维管理,工单执行,第一时间处理故障节点,保证所有业务稳定运行;
(4)负责备份容灾产品安装配置及维护工作;
(5)负责维保项目定期巡检及制作系统运行报告。
岗位名称:通信工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下,卫星通信相关专业。
2、素质要求
(1)熟悉卫星通信原理;
(2)有2年以上卫星通信系统集成能力;
(3)熟悉国内常用通信卫星参数、卫星通信地面设备、卫星通信终端应用;
(4)了解卫星通信系统组成,了解国内常用调制解调器及编解码器设备;
(5)具有良好的理解能力、文字表达能力、书写分析汇总工作;
(6)能够吃苦耐劳,能加班,出差。
3、岗位职责
(1)负责单位卫星通信的整体规划;
(2)负责各类通信设备的调试、保养、升级;负责相关技术方案和操作手册的撰写和技术培训;
(3)负责各类通信设备的选型采购;
(4)根据单位实际情况对卫星通信系统进行优化升级;
(5)参与重大应急通信保障任务;完成领导交给的其他任务。
岗位名称:网络工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下,计算机类相关专业。
2、素质要求
(1)掌握各种网络环境搭建,具备较强的技术基础;
(2)熟悉网络设备的安装、调试、维护;
(3)熟悉计算机网络和网络安全的调试;
(4)具备网络故障的分析、判断、解决能力;
(5)有较强的沟通协调能力及高度责任心;
(6)具有撰写技术文档和手册能力,良好的英文阅读能力;
(8)有“网络工程师”或等同资格认证优先;
(7)能够吃苦耐劳、能加班、出差。
3、岗位职责
(1)单位网络建设和管理;进行网络调整、性能优化;
(2)负责网络环境的管理、配置、排错、维护;
(3)负责网络设备的安装、配置、管理,提供网络设备维护方案;
(4)负责机房内的网络联接及网络间的系统配置;
(5)负责机房线路的布置和协议的规范工作;
(6)负责计算机间的网络联接及网络共享,并负责网络间安全性的设置;
(7)建立完整的网络系统文档;
(8)协助办公网络环境的维护,终端设备的维护。
岗位名称:苹果(IOS)开发工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下。
2、素质要求
(1)3年以上iOS软件开发经验,独立高效完成开发工作;
(2)熟练掌握Objective-C语言,熟练掌握Xcode等开发工具,深入理解 iOS SDK,熟练掌握SDK开发,熟悉客户端常用架构;
(3)熟练掌握iOS下网络通信机制、多线程、内存管理机制等;
(4)拥有很好的设计模式和思维,熟悉面向对象编程;
(5)深入了解各个不同iOS版本的特性与差异并有丰富适配经验, 能熟练应用MVC/MVVM等设计模式;
(6)有新媒体业务相关经验优先,有 Swift/Flutter 开发经验者优先。
(7)有良好编码风格,良好的沟通能力与团队协作能力。
3、岗位职责
(1)负责公司iOS端的开发、维护及性能优化;
(2)根据需求完成业务功能的编码实现;
(3)提供产品维护支持,不断优化产品。
岗位名称:安卓(Android)开发工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下。
2、素质要求
(1)3年以上Android开发经验;
(2)熟悉Android SDK,了解Android Framework,对相应API能熟练掌握;
(3)熟悉Android下网络通信机制,对Socket通信、TCP/IP和http、https有一定理解和经验;
(4)熟悉Android平台UI设计,熟悉常用布局;
(5)理解面向对象设计的基本原则,熟悉常用的设计模式;
(6)能独立开发App,有线上已发布的成品App;
(7)具备很强的分析能力和解决问题的能力,有大规模代码的阅读和修改经验;
(8)有良好编码风格,良好的沟通能力与团队协作能力。
(9)有责任心,抗压力强,有良好的团队精神,语言表达能力,乐于接受挑战。
3、岗位职责
(1)负责公司APP的开发和维护;
(2)根据需求完成业务功能的编码实现;
(3)提供产品维护支持,不断优化产品。
岗位名称:WEB前端工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下,计算机、大数据等相关专业。
2、素质要求
(1)3年以上相关工作经历;
(2)精通HTML5、CSS3、ES6、JS、AJAX 等基础技术,能够很好解决浏览器兼容性;
(3)精通VUE、JQUERY等JS框架;
(4)对用户体验、交互操作流程、及用户需求有一定了解,并具有良好的代码风格、接口设计与程序架构能力;
(5)具备良好的责任心、较强的学习能力、优秀的团队沟通与协作能力。
3、岗位职责
(1)利用HTML/CSS/JavaScript等各种Web技术进行产品的界面开发;
(2)整体页面结构及样式层结构的设计、优化;
(3)制作标准优化的代码,并增加交互动态功能;
(4)与后台应用开发配合,持续优化前端体验、页面响应速度和浏览器兼容性等。
岗位名称:产品经理
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下。
2、素质要求
(1)具有新闻媒体单位5年以上工作经验,能够熟练操作多种网站CMS系统;
(2)熟悉产品经理相关基础知识(需求分析、用户体验、数据分析、竞品分析、原型设计);
(3)熟悉相关工具软件,设计产品交互原型、业务流程;
(4)善于沟通、工作积极、聪明认真、责任心强,能独立推进产品工作。
3、岗位职责
(1)参与新闻类APP及CMS系统设计,需求收集、功能设计;
(2)编写产品需求文档、设计原型、协调、推动研发按时完成产品开发、测试和交付;
(3)负责竞品分析、用户调研,对产品的使用情况进行跟踪、分析,挖掘潜在需求;
(4)沉淀产品标准化解决方案,总结产品优势,撰写整体产品方案。
岗位名称:测试工程师
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下。
2、素质要求
(1)具有良好的品质意识和质量管控意识;
(2)两年以上软件测试工作经验,具备良好的职业素养和保密意识;
(3)具有一定的编程基础,熟悉C、C++语言优先;
(4)具有较好的文档撰写能力,团队协作和沟通力能强;
(5)积极主动,热爱本职,有软件测评工程师证书者优先。
3、岗位职责
(1)全面负责项目业务流程、后台管理、接口等测试工作;
(2)完成各需求、优化以及运维等测试任务的处理;
(3)根据需求规格说明书编写测试计划,设计测试数据和测试用例;
(4)根据测试计划和测试用例进行测试,保证测试的质量和进度;
(5)及时反应测试中的问题,对发现的问题进行详细分析和准确定位;
(6)编写测试报告、用户操作手册等文档;
(7)对测试结果、bug等进行统计、分析;负责测试环境部署;
(8)对生产问题等能及时复现。
岗位名称:人力资源助理
所需人数:2人
1、学历专业
全日制本科(含)以上学历,35周岁以下,人力资源管理及相关专业。
2、素质要求
(1)熟练使用各类办公设备及办公软件;
(2)具有团队合作精神,有良好的沟通协调能力,强烈的责任心,工作细致认真负责,能够承受一定的工作压力。
3、岗位职责
负责招聘、薪资、培训、规划、考核、劳资关系。
岗位名称:财务助理
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下,财务、会计等相关专业。
2、素质要求
(1)熟练使用各类办公设备及办公软件;
(2)具有团队合作精神,有良好的沟通协调能力,强烈的责任心,工作细致认真负责,能够承受一定的工作压力。
3、岗位职责
日常报账。
岗位名称:采购助理
所需人数:1人
1、学历专业
全日制本科(含)以上学历,35周岁以下,财务、会计等相关专业。
2、素质要求
(1)熟练使用各类办公设备及办公软件;
(2)具有团队合作精神,有良好的沟通协调能力,强烈的责任心,工作细致认真负责,能够承受一定的工作压力。
3、岗位职责
日常采购。
【招聘流程】
报名、资格初审、笔试、资格复审及面试、体检和考察、公示、签订协议
【特别提示】
1.本次招聘不接受其他形式报名,所填简历信息一旦提交将无法修改。应聘人员应保证所填写简历信息和所提供的各种材料详细、真实、准确。
2.招聘工作期间,相关信息在公招网公布,参加招聘人员应及时关注网站信息,按要求填写固定电话和手机号码,并保持通讯畅通。如手机装有安全软件对未知号码进行屏蔽,请取消,因本人原因错过重要信息的,责任自负。
3.本次招聘一律不指定任何复习参考教材和培训机构。
本公告由中国人民解放军新闻传播中心人力资源部负责解释。
网络报考技术咨询电话:010-68771309、68771313
监督投诉电话:010-66720766、66720018
咨询时间:工作日周一至周五,上午9:00-12:00,下午3:00-5:30
解放军报微信发布
来源:中国军网
编辑:马艺轩
轻量级框架:只关注视图层,是一个构建数据的视图集合,大小只有几十kb;
简单易学:国人开发,中文文档,不存在语言障碍 ,易于理解和学习;
双向数据绑定:保留了angular的特点,在数据操作方面更为简单;
组件化:保留了react的优点,实现了html的封装和重用,在构建单页面应用方面有着独特的优势;
视图,数据,结构分离:使数据的更改更为简单,不需要进行逻辑代码的修改,只需要操作数据就能完成相关操作;
虚拟DOM:dom操作是非常耗费性能的,不再使用原生的dom操作节点,极大解放dom操作,但具体操作的还是dom不过是换了另一种方式;
运行速度更快:相比较与react而言,同样是操作虚拟dom,就性能而言,vue存在很大的优势。
总共分为8个阶段创建前/后,载入前/后,更新前/后,销毁前/后。
创建前/后: 在beforeCreate阶段,vue实例的挂载元素el和数据对象data都为undefined,还未初始化。在created阶段,vue实例的数据对象data有了,el为undefined,还未初始化。
载入前/后:在beforeMount阶段,vue实例的$el和data都初始化了,但还是挂载之前为虚拟的dom节点,data.message还未替换。在mounted阶段,vue实例挂载完成,data.message成功渲染。
更新前/后:当data变化时,会触发beforeUpdate和updated方法
销毁前/后:在执行destroy方法后,对data的改变不会再触发周期函数,说明此时vue实例已经解除了事件监听以及和dom的绑定,但是dom结构依然存在
对象为引用类型,当复用组件时,由于数据对象都指向同一个data对象,当在一个组件中修改data时,其他重用的组件中的data会同时被修改;而使用返回对象的函数,由于每次返回的都是一个新对象(Object的实例),引用地址不同,则不会出现这个问题。
v-if和v-show看起来似乎差不多,当条件不成立时,其所对应的标签元素都不可见,但是这两个选项是有区别的:
1、v-if在条件切换时,会对标签进行适当的创建和销毁,而v-show则仅在初始化时加载一次,因此v-if的开销相对来说会比v-show大。
2、v-if是惰性的,只有当条件为真时才会真正渲染标签;如果初始条件不为真,则v-if不会去渲染标签。v-show则无论初始条件是否成立,都会渲染标签,它仅仅做的只是简单的CSS切换。
immediate:组件加载立即触发回调函数执行
watch: {
firstName: {
handler(newName, oldName) {
this.fullName=newName + ' ' + this.lastName;
},
// 代表在wacth里声明了firstName这个方法之后立即执行handler方法
immediate: true
}
}
deep: deep的意思就是深入观察,监听器会一层层的往下遍历,给对象的所有属性都加上这个监听器,但是这样性能开销就会非常大了,任何修改obj里面任何一个属性都会触发这个监听器里的 handler
watch: {
obj: {
handler(newName, oldName) {
console.log('obj.a changed');
},
immediate: true,
deep: true
}
}
优化:我们可以使用字符串的形式监听
watch: {
'obj.a': {
handler(newName, oldName) {
console.log('obj.a changed');
},
immediate: true,
// deep: true
}
}
这样Vue.js才会一层一层解析下去,直到遇到属性a,然后才给a设置监听函数。
vue文件的一个加载器,跟template/js/style转换成js模块。
vue实现响应式并不是数据发生变化后dom立即变化,而是按照一定的策略来进行dom更新。
nextTick 是在下次 DOM 更新循环结束之后执行延迟回调,在修改数据之后使用nextTick,则可以在回调中获取更新后的 DOM
当Vue用 v-for 正在更新已渲染过的元素列表是,它默认用“就地复用”策略。如果数据项的顺序被改变,Vue将不是移动DOM元素来匹配数据项的改变,而是简单复用此处每个元素,并且确保它在特定索引下显示已被渲染过的每个元素。
为了给Vue一个提示,以便它能跟踪每个节点的身份,从而重用和重新排序现有元素,你需要为每项提供一个唯一 key 属性。key属性的类型只能为 string或者number类型。
key 的特殊属性主要用在Vue的虚拟DOM算法,在新旧nodes对比时辨识VNodes。如果不使用 key,Vue会使用一种最大限度减少动态元素并且尽可能的尝试修复/再利用相同类型元素的算法。使用key,它会基于key的变化重新排列元素顺序,并且会移除 key 不存在的元素。
vue.js 是采用数据劫持结合发布者-订阅者模式的方式,通过Object.defineProperty()来劫持各个属性的setter,getter,在数据变动时发布消息给订阅者,触发相应的监听回调。主要分为以下几个步骤:
1、需要observe的数据对象进行递归遍历,包括子属性对象的属性,都加上setter和getter这样的话,给这个对象的某个值赋值,就会触发setter,那么就能监听到了数据变化
2、compile解析模板指令,将模板中的变量替换成数据,然后初始化渲染页面视图,并将每个指令对应的节点绑定更新函数,添加监听数据的订阅者,一旦数据有变动,收到通知,更新视图
3、Watcher订阅者是Observer和Compile之间通信的桥梁,主要做的事情是: ①在自身实例化时往属性订阅器(dep)里面添加自己 ②自身必须有一个update()方法 ③待属性变动dep.notice()通知时,能调用自身的update()方法,并触发Compile中绑定的回调,则功成身退。
4、MVVM作为数据绑定的入口,整合Observer、Compile和Watcher三者,通过Observer来监听自己的model数据变化,通过Compile来解析编译模板指令,最终利用Watcher搭起Observer和Compile之间的通信桥梁,达到数据变化 -> 视图更新;视图交互变化(input) -> 数据model变更的双向绑定效果。
通过props传递
父组件: <child value='传递的数据' />
子组件: props['value'],接收数据,接受之后使用和data中定义数据使用方式一样
在父组件中给子组件绑定一个自定义的事件,子组件通过$emit()触发该事件并传值。
父组件: <child @receive='receive' />
子组件: this.$emit('receive','传递的数据')
A:methods :{ 函数{bus.$emit(‘自定义事件名’,数据)} 发送
B:created (){bus.$on(‘A发送过来的自定义事件名’,函数)} 进行数据接收
我们在父组件给子组件传值的时候,可以指定该props的默认值及类型,当传递数据类型不正确的时候,vue会发出警告
props: {
visible: {
default: true,
type: Boolean,
required: true
},
}
首先,组件可以提升整个项目的开发效率。能够把页面抽象成多个相对独立的模块,解决了我们传统项目开发:效率低、难维护、复用性等问题。
然后,使用Vue.extend方法创建一个组件,然后使用Vue.component方法注册组件。子组件需要数据,可以在props中接受定义。而子组件修改好数据后,想把数据传递给父组件。可以采用emit方法。
简而言之,就是先转化成AST树,再得到的render函数返回VNode(Vue的虚拟DOM节点),详细步骤如下:
首先,通过compile编译器把template编译成AST语法树(abstract syntax tree 即 源代码的抽象语法结构的树状表现形式),compile是createCompiler的返回值,createCompiler是用以创建编译器的。另外compile还负责合并option。
然后,AST会经过generate(将AST语法树转化成render funtion字符串的过程)得到render函数,render的返回值是VNode,VNode是Vue的虚拟DOM节点,里面有(标签名、子节点、文本等等)
css的预编译,使用步骤如下:
第一步:用npm 下三个loader(sass-loader、css-loader、node-sass)
第二步:在build目录找到webpack.base.config.js,在那个extends属性中加一个拓展.scss
第三步:还是在同一个文件,配置一个module属性
第四步:然后在组件的style标签加上lang属性 ,例如:lang=”scss”
特性主要有:
当在项目中直接设置数组的某一项的值,或者直接设置对象的某个属性值,这个时候,你会发现页面并没有更新。这是因为Object.defineProperty()限制,监听不到变化。
解决方式:
this.$set(this.arr, 0, "OBKoro1"); // 改变数组
this.$set(this.obj, "c", "OBKoro1"); // 改变对象
splice()、 push()、pop()、shift()、unshift()、sort()、reverse()
vue源码里缓存了array的原型链,然后重写了这几个方法,触发这几个方法的时候会observer数据,意思是使用这些方法不用我们再进行额外的操作,视图自动进行更新。 推荐使用splice方法会比较好自定义,因为splice可以在数组的任何位置进行删除/添加操作
从 2.3.0 起vue重新引入了.sync修饰符,但是这次它只是作为一个编译时的语法糖存在。它会被扩展为一个自动更新父组件属性的 v-on 监听器。示例代码如下:
<comp :foo.sync="bar"></comp>
会被扩展为:
<comp :foo="bar" @update:foo="val=> bar=val"></comp>
当子组件需要更新 foo 的值时,它需要显式地触发一个更新事件:
this.$emit('update:foo', newValue)
先给标签设置一个ref值,再通过this.$refs.domName获取,例如:
<div ref="test"></div>
const dom=this.$refs.test
是可以的,来个例子:
<input type="text" v-on="{ input:onInput,focus:onFocus,blur:onBlur, }">
这两个都是用来存放项目中所使用的静态资源文件。
两者的区别:
assets中的文件在运行npm run build的时候会打包,简单来说就是会被压缩体积,代码格式化之类的。打包之后也会放到static中。
static中的文件则不会被打包。
建议:将图片等未处理的文件放在assets中,打包减少体积。而对于第三方引入的一些资源文件如iconfont.css等可以放在static中,因为这些文件已经经过处理了。
很多时候,我们封装了一个子组件之后,在父组件使用的时候,想添加一些dom元素,这个时候就可以使用slot插槽了,但是这些dom是否显示以及在哪里显示,则是看子组件中slot组件的位置了。
使用vue开发时,在vue初始化之前,由于div是不归vue管的,所以我们写的代码在还没有解析的情况下会容易出现花屏现象,看到类似于{{message}}的字样,虽然一般情况下这个时间很短暂,但是我们还是有必要让解决这个问题的。
首先:在css里加上以下代码
[v-cloak] {
display: none;
}
如果没有彻底解决问题,则在根元素加上style="display: none;" :style="{display: 'block'}"
Vuex 是一个专为 Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension,提供了诸如零配置的 time-travel 调试、状态快照导入导出等高级调试功能。
第一步安装
npm install vuex -S
第二步创建store
import Vue from 'vue';
import Vuex from 'vuex';
Vue.use(Vuex);
//不是在生产环境debug为true
const debug=process.env.NODE_ENV !=='production';
//创建Vuex实例对象
const store=new Vuex.Store({
strict:debug,//在不是生产环境下都开启严格模式
state:{
},
getters:{
},
mutations:{
},
actions:{
}
})
export default store;
第三步注入vuex
import Vue from 'vue';
import App from './App.vue';
import store from './store';
const vm=new Vue({
store:store,
render: h=> h(App)
}).$mount('#app')
一共有5个核心属性,分别是:
const store=new Vuex.Store({
state: {
todos: [
{ id: 1, text: '...', done: true },
{ id: 2, text: '...', done: false }
]
},
getters: {
doneTodos: state=> {
return state.todos.filter(todo=> todo.done)
}
}
})
store.getters.doneTodos // -> [{ id: 1, text: '...', done: true }]
const store=new Vuex.Store({
state: {
count: 1
},
mutations: {
increment (state) {
// 变更状态
state.count++
}
}
})
store.commit('increment')
const store=new Vuex.Store({
state: {
count: 0
},
mutations: {
increment (state) {
state.count++
}
},
actions: {
increment (context) {
context.commit('increment')
}
}
})
const moduleA={
state: ()=> ({ ... }),
mutations: { ... },
actions: { ... },
getters: { ... }
}
const moduleB={
state: ()=> ({ ... }),
mutations: { ... },
actions: { ... }
}
const store=new Vuex.Store({
modules: {
a: moduleA,
b: moduleB
}
})
store.state.a // -> moduleA 的状态
store.state.b // -> moduleB 的状态
如果请求来的数据是不是要被其他组件公用,仅仅在请求的组件内使用,就不需要放入vuex 的state里。
如果被其他地方复用,这个很大几率上是需要的,如果需要,请将请求放入action里,方便复用。
从vuex中取的数据,不能直接更改,需要浅拷贝对象之后更改,否则报错;
用sessionstorage 或者 localstorage 存储数据
存储: sessionStorage.setItem( '名', JSON.stringify(值) )
使用: sessionStorage.getItem('名') ---得到的值为字符串类型,用JSON.parse()去引号;
也可以引入插件vuex-persist,使用方法如下:
npm install --save vuex-persist
or
yarn add vuex-persist
import VuexPersistence from 'vuex-persist'
const vuexLocal=new VuexPersistence({
storage: window.localStorage
})
const store=new Vuex.Store({
state: { ... },
mutations: { ... },
actions: { ... },
plugins: [vuexLocal.plugin]
})
通过以上设置,在图3中各个页面之间跳转,如果刷新某个视图,数据并不会丢失,依然存在,并且不需要在每个 mutations 中手动存取 storage 。
在严格模式下,无论何时发生了状态变更且不是由mutation函数引起的,将会抛出错误。这能保证所有的状态变更都能被调试工具跟踪到。
在Vuex.Store 构造器选项中开启,如下
const store=new Vuex.Store({
strict:true,
})
使用mapGetters辅助函数, 利用对象展开运算符将getter混入computed 对象中
import {mapGetters} from 'vuex'
export default{
computed:{
...mapGetters(['total','discountTotal'])
}
}
使用mapMutations辅助函数,在组件中这么使用
import { mapMutations } from 'vuex'
methods:{
...mapMutations({
setNumber:'SET_NUMBER',
})
}
然后调用this.setNumber(10)相当调用this.$store.commit('SET_NUMBER',10)
action 是用this.store.dispatch('ACTION_NAME',data)来提交。
mutation是用this.$store.commit('SET_NUMBER',10)来提交
{
state, // 等同于 `store.state`,若在模块中则为局部状态
rootState, // 等同于 `store.state`,只存在于模块中
commit, // 等同于 `store.commit`
dispatch, // 等同于 `store.dispatch`
getters, // 等同于 `store.getters`
rootGetters // 等同于 `store.getters`,只存在于模块中
}
需要通过computed计算属性来转换。
<input v-model="message">
// ...
computed: {
message: {
get () {
return this.$store.state.message
},
set (value) {
this.$store.commit('updateMessage', value)
}
}
}
Vue Router 是 Vue.js 官方的路由管理器。它和 Vue.js 的核心深度集成,让构建单页面应用变得易如反掌。包含的功能有:
第一步安装
npm install vue-router -S
第二步在main.js中使用Vue Router组件
第三步配置路由
路由组件可以是直接定义,也可以是导入已经定义好的组件。这里导入已经定义好的组件。如下
定义路由对象数组。对象的path是自定义的路径(即使用这个路径可以找到对应的组件),component是指该路由对应的组件。如下:
调用Vue Router的构造方法创建一个Vue Router的实例对象,将上一步定义的路由对象数组作为参数对象的值传入。如下
第四步在App.vue中使用路由
在App.vue中使用标签来显示路由对应的组件,使用标签指定当点击时显示的对应的组件,to属性就是指定组件对应的路由。如下:
在router目录下的index.js文件中,对path属性加上/:id。使用router对象的params.id获取动态参数
常用的是router.beforeEach(to,from,next),在跳转前进行权限判断。一共有三种:
使用query方法传入的参数使用this.$route.query接受
使用params方式传入的参数使用this.$route.params接受
route为当前router跳转对象里面可以获取name、path、query、params等
router为VueRouter实例,想要导航到不同URL,则使用router.push方法
找到入口文件main.js里的new Vue(),必须使用router名,不能把router改成Router或者其他的别名
// 引入路由
import router from './routers/router.js'
new Vue({
el: '#app',
router, // 这个名字必须使用router
render: h=> h(App)
});
随着项目功能模块的增加,引入的文件数量剧增。如果不做任何处理,那么首屏加载会相当的缓慢,这个时候,路由按需加载就闪亮登场了。
webpack< 2.4 时
{
path:'/',
name:'home',
components:resolve=>require(['@/components/home'],resolve)
}
webpack> 2.4 时
{
path:'/',
name:'home',
components:()=>import('@/components/home')
}
import()方法是由es6提出的,动态加载返回一个Promise对象,then方法的参数是加载到的模块。类似于Node.js的require方法,主要import()方法是异步加载的。
Vue路由在Android机上有问题,babel问题,安装babel polypill插件解决
使用@click.native。原因:router-link会阻止click事件,.native指直接监听一个原生事件
这个模块请看我的另一篇文章,此处不再整理(我太懒了)
https://juejin.cn/post/6968630178163458084
这个模块请看我的另一篇文章,此处不再整理(我太懒了)
https://juejin.cn/post/6850037269227634702
类型:String
默认:'/'
部署应用包时的基本 URL。默认情况下,Vue CLI会假设你的应用是被部署在一个域名的根路径上,例如https://www.my-app.com/。如果应用被部署在一个子路径上,你就需要用这个选项指定这个子路径。例如,如果你的应用被部署在https://www.my-app.com/my-app/,则设置publicPath为/my-app/
这个值也可以被设置为空字符串 ('') 或是相对路径 ('./'),这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径,也可以用在类似 Cordova hybrid 应用的文件系统中。
类型:boolean
moren:true
不允许打包时生成项目来源映射文件,在生产环境下可以显著的减少包的体积
注 Source map的作用:针对打包后的代码进行的处理,就是一个信息文件,里面储存着位置信息。也就是说,转换后的代码的每一个位置,所对应的转换前的位置。有了它,出错的时候,除错工具将直接显示原始代码,而不是转换后的代码。这无疑给开发者带来了很大方便
放置生成的静态资源 (js、css、img、fonts) 的 (相对于 outputDir 的) 目录,默认是'',
指定生成的 index.html 的输出路径(相对于outputDir)。也可以是一个绝对路径。默认是'index.html'
是否在每次保存时使用eslint检查,这个对语法的要求比较严格,对自己有要求的同学可以使用
css: {
//是否启用css分离插件,默认是true,如果不启用css样式分离插件,打包出来的css是通过内联样式的方式注入至dom中的,
extract: true,
sourceMap: false,//效果同上
modules: false,// 为所有的 CSS 及其预处理文件开启 CSS Modules。
// 这个选项不会影响 `*.vue` 文件。
}
本地开发服务器配置,此处直接贴上我常用的配置,以注释的方式介绍
devServer: {
//配置开发服务器
host: "0.0.0.0",
//是否启用热加载,就是每次更新代码,是否需要重新刷新浏览器才能看到新代码效果
hot: true,
//服务启动端口
port: "8080",
//是否自动打开浏览器默认为false
open: false,
//配置http代理
proxy: {
"/api": { //如果ajax请求的地址是http://192.168.0.118:9999/api1那么你就可以在jajx中使用/api/api1路径,其请求路径会解析
// http://192.168.0.118:9999/api1,当然你在浏览器上开到的还是http://localhost:8080/api/api1;
target: "http://192.168.0.118:9999",
//是否允许跨域,这里是在开发环境会起作用,但在生产环境下,还是由后台去处理,所以不必太在意
changeOrigin: true,
pathRewrite: {
//把多余的路径置为''
"api": ""
}
},
"/api2": {//可以配置多个代理,匹配上那个就使用哪种解析方式
target: "http://api2",
// ...
}
}
}
这是一个不进行任何 schema 验证的对象,因此它可以用来传递任何第三方插件选项,例如:
{
//定义一个全局的less文件,把公共样式变量放入其中,这样每次使用的时候就不用重新引用了
'style-resources-loader': {
preProcessor: 'less',
patterns: [
'./src/assets/public.less'
]
}
}
是一个函数,会接收一个基于 webpack-chain 的 ChainableConfig 实例。允许对内部的 webpack 配置进行更细粒度的修改。例如:
到前端技术,我们通常都会说到"三大块":HTML、CSS、JavaScript,前端最核心的三项技术。
从逻辑上讲,一个网页可以视为由这三项技术实现的三层架构有机结合体。
· 结构层:表述一个页面中有哪些信息,以及信息之间的关系,由HTML实现。
· 表现层:决定了页面中的信息会以怎样的外观呈现出来,由CSS实现。
· 行为层:控制了页面如何与用户进行交互,由JS实现。
除了基本的"三大块"之外,作为前端开发工程师,还需要掌握以下知识点:
· HTTP相关:由于前端资源都是浏览器通过网络下载的,所以有必要了解相关的网络协议。
· 前端性能优化:让网页更快,减少用户的等待,是前端工程师面临的重要课题,需要掌握前端性能优化相关的工具和方法。
· 前端框架:Web业务日趋复杂,对前端开发提出更高要求。学会使用框架开发,很好地解决了jQuery 称霸时代开发周期太长,复用性低等问题,大大提升了效率。
· Node相关:在Node.js之前,没有任何一种脚本语言能贯穿前后端平台——Node.js可以用JS写后台,这对于熟悉JS的前端人员而言会更容易掌握,并且用Node.js可以快速搭建本地服务器。这是很多前端开发者青睐这项技术的原因。
以下,人邮君就围绕前端开发所需技能列出一份荐书清单,并按照豆瓣评分和读者评价给出了推荐指数,请签收!
超文本标记语言(Hyper Text Markup Language,HTML),用于描述超文本中内容的显示方式,如文字以什么颜色、大小来显示等。HTML从1.0到5.0经历了巨大的变化,已经成为了一种非常成熟的标记语言。
《HTML5权威指南》
推荐指数:☆☆☆☆
作者:[美]Adam Freeman 译者:谢廷晟 牛化成 刘美英
本书是系统学习网页设计的参考图书,全书分为五部分:
· 介绍学习需要的预备知识和HTML、CSS和JavaScript的进展;
· 讨论HTML元素,并详细说明了HTML5中新增和修改的元素;
· 阐述CSS,涵盖了所有控制内容样式的CSS选择器和属性,并辅以大量代码示例和图示;
· 介绍DOM,剖析如何用JavaScript操纵HTML内容;
· 讲解Ajax、多媒体和canvas元素等HTML5特性。
本书面向初学者和中等水平Web开发人员,是牢固掌握HTML5、CSS3和JavaScript的必读之作。
《HTML5程序设计(第2版)》
推荐指数:☆☆☆
作者:[荷]Peter Lubbers [美]Brian Albers [美]Frank Salim 译者:柳靖 李杰 刘淼
本书主要内容包括:
· HTML5历史背景、新的语义标签及与以往HTML版本相比的根本变化;
· HTML5设计原理;
· SVG和拖放API相关内容;
· 逐一讨论HTML5的Canvas、Geolocation、Communication、WebSocket、Forms、WebWorkers、Storage等API的使用;
· 探索了离线Web应用并展望了HTML5未来的发展前景。
本书面向有一定经验的Web应用开发人员,对HTML5及未来Web应用技术发展有浓厚兴趣的读者也可以学习参考。
级联样式表(Cascading Style Sheet)简称"CSS",通常又称为"风格样式表(Style Sheet)",是用来控制网页外观的一门技术。各种物联网设备,不论屏幕尺寸大小,只要有浏览器就要用到CSS。
《HTML5与CSS3基础教程(第8版)》
推荐指数:☆☆☆☆
作者:[美]Elizabeth Castro [美]Bruce Hyslop 译者:望以文
本书是讲解HTML和CSS入门知识的经典畅销书,全面系统地阐述了HTML5和CSS3基础知识以及实际运用技术,通过大量实例深入浅出地分析了网页制作的方方面面。主要内容有:
· 介绍文本、图像、链接、列表、表格、表单等网页元素;
· 介绍如何为网页设计布局、添加动态效果等;
· 调试和发布;
· 书中的完整代码示例,以及更多实例及进阶参考资料(配套网站)。
通过学习本书,零起点读者即可创建网站,而中水平的开发人员也可以快速了解HTML5新元素、CSS3的奇幻效果、响应式Web设计以及各种最佳实践。
《CSS揭秘》
推荐指数:☆☆☆☆☆
作者:[希]LEA VEROU 译者:CSS魔法
· 本书是一本注重实践的教程,作者为我们揭示了47个鲜为人知的CSS技巧;
· 主要内容包括背景与边框、形状、视觉效果、字体排印、用户体验、结构与布局、过渡与动画等;
· 本书将带领读者循序渐进地探寻更优雅的解决方案,攻克每天都会遇到的各种网页样式难题。
《CSS揭秘》是前端工程师、网页开发人员的进阶必备书籍。
《CSS世界》
推荐指数:☆☆☆☆
作者:张鑫旭
本书主要内容包括:
· 结构、内容、美化装饰等方面大量的CSS知识点;
· 通过大量的实战案例,详尽解析CSS的相关知识与常见问题;
· 专门的配套网站进行实例展示、问题答疑。
作为一本CSS深入学习的书,书中介绍大量许多前端开发人员都不知道的CSS知识点。通过阅读本书,读者会对CSS世界的深度和广度有一个全新的认识。
《CSS权威指南(第四版)(上下册)》
推荐指数:☆☆☆☆
作者:[美]Eric A. Meyer [美]Estelle Weyl 译者:安道
· 本书全面阐述了 CSS 的实现方式,深入分析了最新的 CSS 规范;
· 展示了如何通过布局、过渡和动画、边框、背景、文本属性,以及许多其他工具和技术来改善用户体验、加快开发速度、避免潜在的错误;
· 如果你是网页设计师或应用开发者,对复杂的页面样式、改进可访问性以及节省时间和精力感兴趣,那你决不能错过这本书。
JavaScript是一种解释型的、基于对象的脚本语言,它能够将网页中的文本、图形、声音和动画等各种媒体形式捆绑在一起,形成一个紧密结合的信息源。无论是桌面开发,还是移动应用,JavaScript都是必须掌握的技术。
《JavaScript高级程序设计(第3版)》
推荐指数:☆☆☆☆☆
作者:[美]Nicholas C.Zakas 译者:李松峰 曹力
本书承继了之前版本全面深入、贴近实战的特点,讲解了JavaScript语言的核心,展示了现有规范及实现为开发Web应用提供的各种支持和特性。本书主要内容包括:
· 解读JavaScript实现各个组成部分;
· 阐述JavaScript面向对象编程;
· 剖析DOM、BOM及浏览器事件模型;
· Web应用基本数据格式JSON、XML及其存取;
· Ajax、Comet服务器端通信和基于File API的拖放式文件上传;
· ECMAScript 5定义的新核心语言特性;
· HTML5涵盖的表单、媒体、Canvas(包括WebGL);
· Selectors、Web、Workers、地理定位及跨文档传递消息等新API;
· 离线应用及客户端存储(包括IndexedDB);
· 维护、性能、部署相关的开发实践;
· 新兴API及ECMAScript Harmony展望。
作为JavaScript技术经典名著,《JavaScript高级程序设计(第3版)》可以说是JavaScript最权威的入门书籍了。
《JavaScript DOM编程艺术(第2版)》
推荐指数:☆☆☆☆
作者:[英]Jeremy Keith [加]Jeffrey Sambells 译者:杨涛 王建桥 杨晓云等
本书是超级畅销书的升级版,由倡导Web标准的领军人物执笔,揭示了前端开发的真谛,是学习JavaScript和DOM开发的必读之作。本书主要内容包括:
· JavaScript和DOM的基本知识;
· 通过几个实例演示了专业水准的网页开发技术;
· 透彻阐述了平稳退化等一批至关重要的JavaScript编程原则和实践;
· 全面探讨了HTML5以及jQuery等JavaScript库。
通过阅读本书,读者将看到JavaScript、HTML5和CSS如何协作来创建易用的、与标准兼容的Web设计,以及掌握使用JavaScript和DOM通过客户端动态效果和用户控制的动画来加强Web页面的必备技术;同时,还将对如何利用库提高开发效率有全面深入的理解。
《你不知道的JavaScript》
推荐指数:☆☆☆☆☆
作者:[美]Kyle Simpson 译者:赵望野 梁杰
本书深入理解语言内部的机制,全面介绍了JavaScript中常被人误解和忽视的重要知识点。
· 《你不知道的JavaScript(上卷)》介绍了该系列的两个主题——"作用域和闭包"以及"this和对象原型"。掌握了这些知识之后,无论什么技术、框架和流行词语,你都能轻松理解。本书讲解通透深入,是入门必备书籍。
· 《你不知道的JavaScript(中卷)》主要介绍了类型、语法、异步和性能。
· 《你不知道的JavaScript(下卷)》主要介绍了入门知识和对ES6及未来发展趋势的展望。
本书既适合JavaScript语言初学者阅读,又适合经验丰富的JavaScript开发人员深入学习。
《Head First JavaScript程序设计》
推荐指数:☆☆☆☆
作者:[美]Eric T. Freeman [美]Elisabeth Robson 译者:袁国忠
· 本书语言和版式活泼,内容讲解深入浅出,是难得的JavaScript入门书;
· 本书内容涵盖JavaScript的基本知识以及对象、函数和浏览器文档对象模型等高阶主题;
· 书中配备了大量有趣的实例、图示和练习,让读者轻轻松松掌握JavaScript。
本书的读者对象为JavaScript入门读者以及网页设计入门者。
`````````
《JavaScript忍者秘籍 第2版》
推荐指数:☆☆☆☆☆
作者:[美]John Resig [美]Bear Bibeault [美]Josip Maras 译者:一心一译前端小组
本书共分4个部分,从不同层次讲述了逐步成为JavaScript高手所需的知识:
· 本书从JavaScript语言及重要的特性谈起,由浅入深地探讨了函数、作用域、闭包、生成器函数、对象、数组、模块化、JavaScript与Web页面的交互以及事件等主题;
· 引导读者更加深入地了解JavaScript的方方面面,充分展示了JavaScript语言的各种特性;
· 本书结合ECMAScript 6和7的相关概念,涵盖了流行的JavaScript框架所使用的技术。
本书适合具备一定JavaScript基础知识的读者阅读,也适合从事程序设计工作并想要深入探索JavaScript语言的读者阅读。
《JavaScript设计模式》
推荐指数:☆☆☆☆
作者:张容铭
本书共分六篇四十章:
· 讨论了几种函数的编写方式,体会JavaScript在编程中的灵活性;
· 讲解了面向对象编程的知识,其中讨论了类的创建、数据的封装以及类之间的继承;
· 探讨了各种模式的技术,如简单工厂模式,包括工厂方法模式、抽象工厂模式、建造者模式、原型模式、单例模式,以及外观模式,包括适配器模式。
· 讲解了几种适配器、代理模式、装饰者模式和MVC模式,讨论了如何实现对数据、视图、控制器的分离。
· 在讲解MVP模式时,讨论了如何解决数据与视图之间的耦合,并实现了一个模板生成器;
· 讲解MVVM模式时,讨论了双向绑定对MVC的模式演化。
本书几乎包含了关于JavaScript设计模式的全部知识,是进行JavaScript高效编程必备的学习手册。
《JavaScript面向对象精要》
推荐指数:☆☆☆☆☆
作者:[美]Nicholas C.Zakas 译者:胡世杰
全书共6章,内容简洁而精妙,关注面向对象的原理和ES5对象新特性,帮助那些已经熟知面向对象编程的读者掌握这些概念是如何在JavaScript中工作的。
· 本书深入探讨了原始类型和引用类型、函数、对象、构造函数和原型对象、继承和对象模式等主题和特性;
· 你将学到JavaScript独特的面向对象的编程方式;
· 你将学到抛弃类的概念和基于类的继承,学习基于原型的继承和构造函数;
· 你将学会如何创建对象、定义自己的类型、使用继承以及其他各种操作来充分使用对象。
总而言之,你将学到JavaScript语言并进行专业编程所需熟知的一切。本书适合熟悉面向对象编程的概念并希望将其应用于JavaScript的开发者阅读,也适合JavaScript新手学习参考。
《锋利的jQuery(第2版)》
推荐指数:☆☆☆☆
作者:单东林 张晓菲 魏然
· 本书介绍了jQuery的各种函数和方法调用;
· 读者可以系统地掌握jQuery的选择器、DOM操作、事件和动画、AJAX应用、插件、jQuery Mobile、jQuery各个版本变化、jQuery性能优化和技巧等知识点,并结合每个章节后面的案例演示进行练习;
· 本书的第8章将前7章讲解的知识点和效果进行了整合,打造出一个非常有个性的网站,并从案例研究、网站材料、网站结构、网站样式和网站脚本等方面指导读者参与到项目建设中来。
《锋利的jQuery(第2版)》适合所有对jQuery技术感兴趣的Web设计者和前端开发人员阅读和参考。
Node.js是建立在Chrome浏览器的JavaScript运行时基础上,用于快速构建可扩展的网络应用的平台。Node旨在帮助开发者编写异步的、事件驱动的应用。在Node中,每一个请求都是异步的,并且几乎所有的I/O都是非阻塞的。因此,Node应用非常高效率,能够处理的"并发"连接的数量也很庞大。
《Node.js实战(第2版)》
推荐指数:☆☆☆
作者:[英]Alex Young [美] Bradley Meck [美] Mike Cantelon [美] Tim Oxley [美] Marc Harter [美] T.J.Holowaychuk [美] Nathan Rajlich 译者:吴海星
· Node.js核心框架贡献者力作 ;
· 展示Node核心技巧 ;
· 涵盖前端构建系统、Web框架选择、数据库交互和Web程序测试与部署等全栈开发所需技术。
本书是Node.js的实战教程,涵盖了为开发产品级Node应用程序所需要的一切特性、技巧以及相关理念。从搭建Node开发环境,到一些简单的演示程序,到开发复杂应用程序所必不可少的异步编程,第2版介绍了全栈开发者所需的全部技术,可作为入门书籍。
《深入浅出 Node.js》
推荐指数:☆☆☆☆☆
作者:朴灵
《深入浅出Node.js》从不同的视角介绍了 Node 内在的特点和结构。由首章Node介绍为索引,涉及Node的各个方面,主要内容包括:
· 模块机制的揭示;
· 异步I/O实现原理的展现;
· 异步编程的探讨;
· 内存控制的介绍;
· 二进制数据Buffer的细节;
· Node中的网络编程基础;
· Node中的Web开发;
· 进程间的消息传递;
· Node测试以及通过Node构建产品需要的注意事项。
附录介绍了Node的安装、调试、编码规范和NPM仓库等事宜。本书适合想深入了解 Node的人员阅读,是进阶必备书籍。
《HTTP权威指南》
推荐指数:☆☆☆☆☆
作者:[美]David Gourley [美]Brian Totty [美]Marjorie Sayer [美]Sailu Reddy [美]Aushu Aggarwal 译者:陈涓 赵振平
本书由具有多年实践经验的专家编写,通过简洁语言和大量翔实的细节图解帮助读者形象地理解Web幕后所发生的事情,详细说明了Web上每条请求的实际运行情况,主要内容包括:
· HTTP方法、首部以及状态码;
· 优化代理和缓存的方法;
· 设计Web机器人和爬虫的策略;
· Cookies、认证以及安全HTTP;
· 国际化及内容协商;
· 重定向及负载平衡策略。
本书深入说明了Web的工作原理,内容全面,讲解细致,是HTTP协议及相关Web技术方面的著作。
《图解HTTP》
推荐指数:☆☆☆☆
作者:[日]上野 宣 译者:于均良
《图解HTTP》对HTTP协议进行了全面系统的介绍,可以说是一本讲解HTTP协议的神书,简单有趣,图文并茂,生动形象,适合入门,主要内容包括:
· HTTP协议的发展历史;
· HTTP协议的结构剖析;
· 常见通信场景及实战案例;
· Web安全、新技术动向等。
读者可通过本书快速了解并掌握HTTP协议的基础知识。
《图解TCP/IP(第5版)》
推荐指数:☆☆☆
作者:[日]竹下隆史 [日]村山公保 [日]荒井透 [日]苅田幸雄 译者:乌尼日其其格
· 本书是一本图文并茂的网络管理技术书籍,旨在让广大读者理解TCP/IP的基本知识、掌握TCP/IP的基本技能;
· 书中讲解了网络基础知识、TCP/IP基础知识、数据链路、IP协议、IP协议相关技术、TCP与UDP、路由协议、应用协议、网络安全等内容;
· 引导读者了解和掌握TCP/IP,营造一个安全的、使用放心的网络环境。
《Web性能权威指南》
推荐指数:☆☆☆☆
作者:[加]Ilya Grigorik 译者:李松峰
本书由谷歌公司高性能团队核心成员创作,堪称实战经验与规范解读结合的产物,获得IETF下一代HTTP协议工作组主席力荐。本书目标是涵盖Web技术体系中应该掌握的所有网络及性能优化知识。本书主要内容有:
· 以性能优化为主线,从TCP、UDP和TLS协议讲起;
· 解释了如何针对这几种协议和基础设施来优化应用;
· 深入探讨了无线和移动网络的工作机制;
· 揭示了HTTP协议的底层细节;
· 同时详细介绍了HTTP 2.0、 XHR、SSE、WebSocket、WebRTC和DataChannel等现代浏览器新增的具有革命性的新能力。
本书适合所有Web应用及站点开发人员阅读,包括但不限于前端、后端、运维、大数据分析、UI/UX、存储、视频、实时消息,以及性能工程师。
当前,三大主流前端框架分别是React、Vue、Angular。
React 是一个采用声明式,高效而且灵活的用来构建用户界面的框架,另辟蹊径提出了以组件化的形式重新构建页面内容,将页面的内容按特征分块,然后将特定块中的HTML、CSS、JS封装在一起,最后用组件来构建页面内容。
《深入React技术栈》
推荐指数:☆☆☆☆
作者:陈屹
本书从几个维度去介绍 React:
· 一是作为 View 库,它怎么实现组件化,以及它背后的实现原理;
· 二是扩展到 Flux 应用架构及重要的衍生品 Redux,它们怎么与 React 结合做应用开发;
· 三是对 React 与 server 的碰撞产生的一些思考;
· 四是讲述它在可视化方面的优势与劣势。
此外,本书非常重视实战,每一节都有实际的例子,细节丰富,内容翔实,由浅入深,无论你是 React 初学者,还是进阶人士,本书都值得一读!本书适合有一定经验的前端开发人员阅读。
Vue.js是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue.js 自身不是一个全能框架——它只聚焦于视图层,因此它非常容易学习,并很容易与其它库或已有项目整合。
《深入浅出Vue.js》
推荐指数:☆☆☆☆
作者:刘博文
本书从源码层面分析了Vue.js,主要内容有 :
· 简要介绍Vue.js;
· 讲解内部核心技术"变化侦测",带领大家从0到1实现一个简单的"变化侦测"系统;
· 介绍虚拟DOM技术,包括虚拟DOM的原理及其patching算法;
· 讨论模板编译技术,包括模板解析器的实现原理、优化器的原理以及代码生成器的原理;
· 介绍其整体架构以及提供给我们使用的各种API的内部原理,同时还介绍了生命周期、错误处理、指令系统与模板过滤器等功能的原理。
360奇舞团团长月影和《JavaScript高级程序设计》译者李松峰作序推荐,适合前端开发人员阅读。
Angular是一个用来构建大型应用,高性能的Web应用程序的框架;是一个完整的、从 UI、路由、Http、Socket到依赖注入、编译、优化、测试的框架。Angular上手起来有一定难度,但其工程属性极强,非常适合多团队的大型项目,一旦学会,优势很大。
《Angular权威教程》
推荐指数:☆☆☆☆
作者:[美]Ari Lerner [巴西]Felipe Coury [美]Nate Murray [巴西]Carlos Taborda 译者:Nice Angular社区
· 本书堪称Angular领域的里程碑式著作,几乎涵盖了关于Angular的所有内容;
· 对于没有经验的人,本书平实、通俗的讲解,递进、严密的组织,可以让人毫无压力地登堂入室,迅速领悟新一代Web应用开发的精髓;
· 如果你有相关经验,那本书对Angular概念和技术细节的全面剖析,以及引人入胜、切中肯綮的讲解,将帮助你彻底掌握这个框架,在自己职业技术修炼之路上更进一步。
*请认真填写需求信息,我们会在24小时内与您取得联系。