技术标签: css vue 前端 js vue.js html
我是软件工程专业,学前端之前,学过 C/C++、Java、PHP、.net 成绩还不错基本都是90多分。感觉自己干后端也不吃力。实验室里面的项目都是前后都写。最爱 PHP,本以为以后就走上PHP后端工程师的道路了。
由于项目需要的原因,后来渐渐开始学起 HTML、CSS、JavaScript 这些语法相关的东西。刚接触时没有感觉太大难度。
当时就想着怎么把页面搞好看,搞各种动画炫技。写一个小球从下面弹出来的效果,换各种姿势弹出。当时觉得前端真的有意思,就入了前端的坑。入坑前,以为前端就是搞各种漂亮的页面,各种特性惊艳别人。
随着接触的越来越深。接触到了 AJAX, jQuery ,Bootstrap,前端开始注重体验。各种框架横空出世 backbone => Angular => React => Vue 眼花缭乱。
写本文的目的是希望对哪些刚接触前端,准备往这个方向发展的同学提供一点可以借鉴对的经验。
HTML、CSS、JavaScript 三大件,完全掌握。不懂得就直接查 MDN。HTML重点掌握语义化。区分块级和内联标签。其他查文档就好了。还有就是定义 head 里面一些meta了解下。
CSS重点看盒子模型,定位,层级,过渡,动画和 transform。知道原理和规则。大部分工作都是照着设计稿化。掌握上面几个99%还原也不难。接下来重点学习几种常见的布局。完了之后去搞flex。最后搞下sass、less。基本就差不多了。
JavaScript,重点来了,《基础阶段,我们学习JavaScript需要注意》看一遍掌握基础(见下图),每个知识点搞懂。ES6基本没啥问题。下面几个问题需整明白,优先级如下:
先搞懂这些比较难的概念,对你JS理解更加深入。
前期要会用,后期要懂原理。
新人先搞 Vue。Vue 算是比较简单的框架了,上手容易。照着官方文档来问题不大。原理方面要提高自己认识。学习怎么看源码。github常去逛逛。
学习框架之前,我其实特别建议,新人先去了解 Babel 和 webpack 不仅仅是使用。一些原理方面的东西工作中也会用到。babel 里面会有教你如何编译代码。webpack教你如和打包文件。自己手写编译器和打包工具也不是特别难。反正对之后看vue、react源码帮助挺大。
搞完 Vue 全家桶,去了解下 React,React hooks 学习下新的理念。再回过头来看Vue。你会发现他们是如此的相似却又不同。
多去实践总结,对整体框架理解会越来越深刻。
新人刚开始看源码,会陷入两个困境中。一是无从下手。二是看了之后感觉没啥收获。
这个也很正常。一般我们熟知的框架都有个几千甚至上万个PR。太大细节会干扰你。掌握整个节奏和流程。学习原理也比较吃力。就连找个入口都像大海捞针一样。建议从下面几个方面入手:
看了源码是别人的,学到了是自己的。学习时候边记笔记,边思考原理,总结经验。
现在最流行的打包工具 webpack 用起来。当然直接用 vue-cli2、vue-cli3、create-react 都是可以的。但是 webpack 相关还是得掌握。
首先重点搞下babel、webpack。学习下编译,打包的原理。自己配置下 webpack。尝试自己去写下下 webpack 的 loader 和 plugin。学习这些之前要懂一点 node.js, node.js 不需要全部学习。一般就日常用到读写文件fs接口,path 路径接口。这些 api 都不难写几个 demo 就懂了。基本上webpack 里面配置文件也没用到多少 node 的东西。最后自己学会配置webpack的配置文件。
如果想深想去优化打包体积和速度,就需要去了解很多webpack插件。webpack 里面最核心的就是插件了。
当然前端工程化不仅仅是这些,CI/CD可持续集成, Umi 了解下。shell各种脚本自动化命令、代码生成技术了解下。
前端现在为什么这么火?各个公司都还挺缺优秀的前端。原因在于技术红利。
移动端web流行起来之后,特别是H5和小程序,带动了多少前端就业,前端迅速取代了安卓和iOS 的大量岗位。
回到正题:所以作为前端人,移动web一般是都要接触的。不同于PC 端。
移动端有哪些东西呢? 不需要全部懂,差不多知道就行了。要用的时候再去学。
简单的说移动web就是:html/css/js 跑在手机app 里面的WebView(web运行环境)。
小程序/公众号就是在这个基础上,将自己APP里面的WebView 租售给其他人使用。
微信APP — 提供SDK —> 微信webview —提供运行环境—> 公众号h5 / 小程序
为什么微信可以容纳几乎无限的H5/小程序页面呢?
因为公众号/小程序的代码都存储在云端,通过不同的路由就可以给几乎无数的开发者使用。
使得微信成为一个运行环境+入口的存在。
1.前端发展的速度远比任何语言和职位要快
2.前端的定位远不止网页开发这么简单,未来移动端更多的js方案,全新影像式交互,浏览器ios中的app应用等等,想象空间还是很大的。
3.前端很有趣,而且很有成就感,前端开发/移动端开发是非常有趣体验。
4.前端天生具备开源的特性,这使得学习和进步变得更容易,那么多优秀的代码和文档就在那里…
文章浏览阅读7.6k次,点赞10次,收藏46次。子窗口跟随主窗口进行移动,需要获取子窗口相对于父窗口的位置。然后在mousemove 的时候,始终获取相对位置,然后移动子窗口即可。代码:.hprotected: void resizeEvent(QResizeEvent *e); void mousePressEvent(QMouseEvent *event); void mouseMoveEvent(QMouseEvent *event); void mouseReleaseEvent(QMouseEvent *event);.cpp_监听父窗口size变化 qt
文章浏览阅读771次。ScrollView 效果ScrollView 说明一个ScrollView 嵌套ListView 嵌套GridView的上拉加载更多,下拉刷新的demo。主要是重写了GridView和LsitView中的onMeasure 方法。写的比较简单,希望对初学者有帮助。[java] view plaincopy_androidtv scrollview+gridview实现上拉加载
文章浏览阅读1.7k次,点赞2次,收藏6次。一,Atom介绍Atom 是 Github 开源的文本编辑器,这个编辑器完全是使用Web技术构建的(基于Node-Webkit)。启动速度快,提供很多常用功能的插件和主题,可以说Atom已经足以胜任“半个IDE”了。个人感觉有如下几个优点:(1)多平台支持(Windows、..._atom编辑器
文章浏览阅读3.5w次,点赞15次,收藏90次。rabbitTemplate及amqpTemplate发布模式不足之处欢迎留言1、rabbitTemplate和amqpTemplate有什么关系?源码中会发现rabbitTemplate实现自amqpTemplate接口,使用起来并无区别,需引入spring-boot-starter-amqp依赖。2、组成生产者 消息队列 消费者 交换机: 隔离生产者和消息队列,充当二者..._amqptemplate
文章浏览阅读1.8w次,点赞11次,收藏44次。go mod以及自定义包package的用法和init()方法包的介绍和定义包(packge)是多个 Go 源码的集合,是一种高级的代码复用方案,Go 语言为我们提供了 很多内置包,如:fmt、strconv、strings、sort、eros、time、encoding/json、os、io 等。Golang 中的包可以分为三种:1、系统内置包 2、自定义包 3、第三方包 系统内置包: Golang语言给我们提供的内置包,引入后可以直接使用,如 fmt、srconv、strings、sort、e_go mod init
文章浏览阅读7.1k次,点赞7次,收藏43次。c++使用vector创建二维0矩阵(初始化)一、前言c++真的是又爱又恨的一门语言,本人是一名python程序员但是因工作需求不得不投入到c++的大军中,逐渐偏离人生苦短我用python的初衷,唠叨完毕开始正题。最近在做一个去eigen库的工作,需要使用vector替换,于是总结了一些使用vector实现矩阵的一些操作的代码,有需要的可以借鉴一下(亲测可用哦)。本篇仅仅写的是vector的初始化的方法,文章后面会逐渐附上其他矩阵操作的链接。二、话不多说上才艺开始我刚使用vector的时候_c++ 二维vector初始化为0
文章浏览阅读1.8w次,点赞15次,收藏85次。文章目录一、solve() 语句符号求解1. 解单变量方程2. 解数值方程3. 解超越方程4. 解方程组二、fsolve() 数值求解:非线性方程三、fzero():解方程组的根四、roots() 语句的用法:求解多项式的根五、求解线性方程组一、solve() 语句符号求解1. 解单变量方程2. 解数值方程>> syms x;>> eqn= x^3-2*x^2 == x-1;>> s = solve(eqn,x)3. 解超越方程并不能得到全部_matlab中u(n+1,:)
文章浏览阅读5.1k次。1、自定义ClassLoader代码如下:package zmx.classloader.test;import java.io.File;import java.io.FileInputStream;import java.io.FileNotFoundException;import java.io.IOException;import java.io.InputStream;_classloader.class
文章浏览阅读1.2k次。完整报错:Traceback (most recent call last):File “/home/Ai/env/lib/python3.5/site-packages/urllib3/connection.py”, line 141, in _new_conn(self.host, self.port), self.timeout, **extra_kw)File “/home/Ai/env/lib/python3.5/site-packages/urllib3/util/connection._traceback (most recent call last): file "f:\work\11月第五周\neo4j\main.py",
文章浏览阅读1w次,点赞14次,收藏87次。Vivado HLS 三:基本概念参考:https://blog.csdn.net/wordwarwordwar/article/details/79998130http://www.elecfans.com/d/663922.html目录:1、FPGA中LUT、LATCH、FF的概念2、LUT、LATCH、FF的相互关系3、verilog语句与LUT、LATCH、FF的对应关系1、FPGA中LUT、LATCH、FF的概念LUT(look up table):查找表 .._vivado ff
文章浏览阅读926次。本文研究全球市场、主要地区和主要国家箱式穿梭车的销量、销售收入等,同时也重点分析全球范围内主要厂商(品牌)竞争态势,箱式穿梭车销量、价格、收入和市场份额等。_穿梭车数量预测分析
文章浏览阅读1.1w次,点赞14次,收藏41次。1 使用普通for循环的方式int[][] chessArr1=new int[11][11]; chessArr1[1][2]=1; chessArr1[2][4]=2; for(int i=0;i<chessArr1.length;i++){ //先遍历行 for(int j=0;j..._java遍历二维数组连接线