基于.Net进行前端开发的技术栈发展路线(二)
前言
上一篇《我的技能树》文章分享了我的技能成长过程,还未完成,今天继续跟大家分享。
01
我的技能树
我的当前的技能树:
其中,标注为黄色旗帜的是基本掌握,标注为红色旗帜的为使用熟练。未标注的只是了解。
上篇分享完了C#部分,下面就根据我的学习历程的先后继续讲。
02
前端开发

在上家公司上班期间,因为公司产品选型基于Winform+Devexpress(后面简称Dev),所以我对Winform和Dev都非常熟悉。我把Winform所有控件全部扒了个遍,而为了熟悉Dev,我又把Dev的官网文档全部看了遍,甚至最后我开发出了基于Dev的代码生成工具,即根据一个已定义好的Model视图(POCO类ViewModel),通过工具自动生成模块的列表页面,编辑页面。编辑页面上的主要特性也支持自动生成,比如下拉列表,下拉数窗等。当然后来我又迅速转向了Web开发,所以这块现在也放弃掉了。
HTML+JavaScript+JQuery+Bootstrap:
因为在项目实施过程中,深感Winform部署不便,而且客户往往钟情于Web应用,这让我下定决心转向Web,那是17年初。但我不想用Webform,不想用.net Mvc,这些都落后了,甚至Bootstrap也相对落后了。而要赶上技术新潮流,虽然步子应该大一点,但对于一个还不熟悉Web的人来说,也要保持对技术发展的认知连续性(这始终是我对技术学习的一个原则性观点),所以我选择了基于ajax的前端框架来实现PC端管理系统,这就需要学习:HTML+JavaScript+JQuery+Bootstrap。我将之前的产品基于这个框架进行了重写。
weui+jquery+knockout:
后来,因为要开发一个基于微信公众号的网页App,这种App比我当前的PC端前端框架需要更灵活,更轻量的实现和更快速的性能,这又需要引入新的技术。现在业界前端三大框架,Vue,Angular,React,我看了下,要学不容易,因为他们的典型开发环境,还要基于nodejs,开发模式,开发工具都要大换,这个步子迈太大了(但后来发现,实际上并不一定需要基于nodejs,以及换开发工具)。最后我选择了先迈一小步,选择knockout,采用了weui+jquery+knockout的组合。
话说knockout也是微软mvc框架推荐的前端开发工具,在VS2012生成mvc的脚手架里,就默认包含了knockout和jquery。学习knockout使得我对mvvm的概念有了更直观的认识,使得后来再学Angular的时候,非常顺利,有一种“哦!Angular的这个和那个功能,能解决knockout的这个和那个问题的感悟”。而jquery是经典,必须得学,学习也不难。
对于JavaScript的学习,和我学C#一样,看经典书籍《JavaScript权威指南》,这个书我在06年就看过,后来中断了。有时间就继续看,补课。现在还没看完。
对于Bootstrap,虽然在用,但了解不深,属于依样画葫芦,碰到问题找百度的阶段。现在新的前端框架都有自己的样式库,不一定选择Bootstrap,它可能有点落后了,但我还是决定,在PC端的管理系统,会继续使用Bootstrap,因为它也是了不起的经典,在PC端的管理系统来说也足够用了,值得继续深入学习和应用。
Angular+Inoic+Cordova+NodeJs:
在完成了微信公号的开发后,有了一定的时间,我开始准备强化前端的能力,开发真正基于手机的APP,我想实现相同的代码能够跨平台,因此在Angular和React之间选型。最后我选择了Angular。这也是基于我当前的技术栈的选择,可能有两点促成了我的选择,一是,有人说“Angular适合做后端开发的人来学习,而React适合做前端的人来学习”。我后来学习了Angular,觉得有一定道理,因为使用Angular这种mvvm框架,实际上差不多就是以开发Winform的方式开发Web页面,那是比较容易理解了。二是,有人说React开发时,还是要写比较多的本地代码(基于Andriod和IOS),这又对技术储备提出了新的要求,虽然当时我已经能做Android开发,但讲到深度理解,那还不够。
学习Angular也走了弯路。因为Angular1.x和Angular差别极大。我研究的心态一上来,把两者都学习了一遍,虽然花费时间,但确实是挺过瘾的。可以说,Angular1.x是个设计精妙的框架,而Angular则是返璞归真,有大成之气。当然,要开发Angular,同时也要学习nodejs的使用和js组件化开发的新思路。
要开发App,只有Angular还不够,怎么调用本地功能?这就引入了Ionic,Ionic基于Angular,封装出自己的一套控件,并集成了cordova来调用本地功能。这样,要开发前端的应用,我选择的技术组合是:NodeJs +Angular+Inoic+Cordova。
对于前端开发,到现在为止,我还是只学到了刚入门,实际上,在用Ionic做项目开发时,我趟了几好个坑,掉进去爬不上来了,因此暂时放弃,用Android原生的App先实现功能。有空了会继续尝试。
另外,我对桌面应用的跨平台也有兴趣,经过了解,发现electron框架是个不错的选择,而且electron可以结合angular和ionic,使得自己的多种技能能够综合使用,非常不错。
03
Java开发

Java+Velocity+Mybatis:
实际上,我本来没想去搞Java。因为.Net,前端,Java一起搞太累了。对于一个应用来说,后端.Net,PC前端Bootstrap+JQuery,移动端Ionic,已经足够了。但因为一个机缘,参与了朋友的一个Java项目,又把Java给捡起来了(06年前曾经做过一两年Java开发,那时候最流行的还是JSF,不会
基于.Net进行前端开发的技术栈发展路线(二)的更多相关文章
- 基于.Net进行前端开发的技术栈发展路线(一)
前言 今天想讲讲的是我的技术树.我最初是做CS开发的,第一阶段的技术经历是以Powerbuilder来做CS开发,第二阶段开始基于C#做winform开发,眼看前端开发越来越流行,需要更广泛的技术栈势 ...
- 基于.Net进行前端开发的技术栈发展路线(三)
前言 上一篇<我的技能树二>文章分享了我的技能中的前端技能和Java技能,今天继续跟大家分享的就是后端技能了. 我的技能树 我当前的技能树: 其中,标注为黄色旗帜的是基本掌握,标注为红色旗 ...
- 网络统计学与web前端开发基础技术
网络统计学与web前端开发基础技术 学习web前端开发基础技术(网页设计)需要了解:HTML.CSS.JavaScript三种语言.下面我们就来了解一下这三门技术在网页设计中的用途: HTML是网页内 ...
- 【web开发】web前端开发常用技术总结归纳
技术选型规范规范 • Vue版本:2.x • 前端路由:vue-route • 异步请求:Axios • 全局状态管理:VueX • css预处理器:sass/less • h5项目移动端适配规则:使 ...
- web前端开发必备技术
1.Vue.js是什么? Vue.js(读音 /vjuː/, 类似于 view) 是一套构建用户界面的 渐进式框架.与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计.Vue 的核心库只关注 ...
- 装饰器的初识,基于bootstrap的前端开发
1装饰器的初识 概念:不改变函数原来的调用方式,动态地给函数添加功能 开放封闭的原则:1>对添加的新功能是开放的,32>不要在元代码进行修改(封闭) 1.1>函数的定义:对代码块和功 ...
- 【圣诞特献】Web 前端开发精华文章推荐【系列二十一】
<Web 前端开发精华文章推荐>2013年第九期(总第二十一期)和大家见面了.梦想天空博客关注 前端开发 技术,分享各种增强网站用户体验的 jQuery 插件,展示前沿的 HTML5 和 ...
- 前端开发必须知道的JS(二) 闭包及应用
http://www.cnblogs.com/ljchow/archive/2010/07/06/1768749.html 在前端开发必须知道的JS(一) 原型和继承一文中说过下面写篇闭包,加之最近越 ...
- 基于thinkphp3.2.3开发的CMS内容管理系统(二)- Rbac用户权限
基于thinkphp3.2.3开发的CMS内容管理系统 thinkphp版本:3.2.3 功能: --分类栏目管理 --文章管理 --商品管理 --用户管理 --角色管理 --权限管理 --友情链接管 ...
随机推荐
- Textarea设置自动高度
$.fn.extend({ autoHeight: function() { return this.each(function() { var $this = jQuery(this); if(!$ ...
- Vue-router重修01
---恢复内容开始--- 1.在vue中获取dom vue中不建议您亲自进行dom操作 vue实例内置ref属性存储或获取相应的dom元素 <div ref="dv"> ...
- 问题:这个新申请的内存为什么不能free掉?(已解决)
一.问题描述 先上代码, /*** 省略 ***/ uChar *base64 = NULL; /*** 省略 ***/ base64 = (一段内存) /*** 省略 ***/ base64 = s ...
- unittest测试套件
测试套件就是测试集,测试集是测试用例的集合. a.按用例顺序执行(addtest) 当addtest与unittest的测试规则冲突时,仍然按照ASCII码的顺序执行. import unittest ...
- JS基础整理面试题
1.DOM和BOM的区别 DOM:document object model;文档对象模型,提供操作页面元素的方法和属性BOM:browser object model;浏览器对象模型,提供一些属性和 ...
- Naïve Media Player, Part 2
项目主页网址: https://github.com/Judylalala/en Q1:如何播放online歌曲? A1:我本来以为会为MediaElement设置一个单独的属性播放online音频. ...
- [译文]Domain Driven Design Reference(七)—— 大型战略设计结构
本书是Eric Evans对他自己写的<领域驱动设计-软件核心复杂性应对之道>的一本字典式的参考书,可用于快速查找<领域驱动设计>中的诸多概念及其简明解释. 上周末电脑硬盘文件 ...
- 1.6 Why only in China?
Android plug-in is in full swing in China, why is it silent in foreign countries? The applications o ...
- kali linux 网络渗透测试学习笔记(二)OWASP ZAP工具扫描SQL injection漏洞失败
按照惯例,利用OWASP ZAP工具扫描SQL injection漏洞时,应该很快就可以扫描出来,但是在笔者进行扫描的时候,却遇到了以下状况: 这说明了该工具根本就没能够扫描出SQL注入的漏洞,不知道 ...
- [Swift]LeetCode630. 课程表 III | Course Schedule III
There are n different online courses numbered from 1 to n. Each course has some duration(course leng ...