前端乱炖,总结一些细节点

总结一下前端方面,自己的一些体会,乱七八糟的整理了一下,暂时就想到了这些,以后会持续更新。

构建工具一定要用,gulp等。使用requireJS、browserify等 js模块管理,bower管理三方库

css:

 结构:

  • 使用less,文件结构参考bootstrap less源文件
  • 尽量多分less文件,按照用途、分类等命名,尽量让一个less文件的代码少一点,文件多一点,这样后期好维护和查询

 三方库:

  • 使用bower下载三方库,如果有需要修改调整三方库的类,引入三方库的less源文件,覆盖一些三方库的类

  (不要修改源文件,只是利用优先级方式自己修改一些类)

  如下,去boostrap入口文件自己添加一些less:

    

@import "../../bower/bootstrap/less/mixins.less";
@import "../../bower/bootstrap/less/variables.less";
@import "variables.less";//my setting
@import "../../bower/bootstrap/less/normalize.less";
@import "../../bower/bootstrap/less/utilities.less";
@import "../../bower/bootstrap/less/type.less";
@import "../../bower/bootstrap/less/grid.less";
@import "../../bower/bootstrap/less/scaffolding.less";
@import "../../bower/bootstrap/less/buttons.less";
@import "../../bower/bootstrap/less/button-groups.less";
@import "../../bower/bootstrap/less/forms.less";

//my
@import "buttons.less";
@import "form.less";
@import "scaffolding.less";

 命名:

  • 命名用中杠隔开,例如:.layout-text。
  • 同时,我觉得自定义class必须在前面加前缀,比如项目叫 sun light,那前缀就是.sl,实际就是.sl-layout-text。或者也可以是公司名的英文开头、也或者自己的,具体根据项目情况。

这样有个好处,因为一般都会用到三方的css库,当自定义的类和三方类混在html中的时候,一下就能看出哪个是自己定义的,非常方便维护和理清页面。

  • 根据不同情况,也可以不加上自定义前缀,比如(只需要在最上层加上一个前缀):

  

<ul class="xx-user-comments">  <li>    <div class="con">      <img class="head">      <p></p>    </div>  </li></ul>.xx-user-comments{//xx代表需要的前缀
    li{
        padding-top: 15px;
        .con{
            position: relative;
            padding-left: 45px;
            .head{
                position: absolute;
                left: 0;
                top: 0;
            }
            p{
                font-size: 14px;
            }
        }
    }
}
  • 图片命名也建议用中杠隔开

 代码:

  • 严谨,布局时尽量写的完善,比如该写宽高的地方一定要写,否则会出现一些想不到的错乱。
  • 充分理解行内元素和块级元素,尽量少用并合理利用float。
  • ID class style !important等选择器,理解他们的优先级
  • css3动画写在before和after里是无效的
  • 能抽离为class的通用属性尽量抽离
  • 能写变量的地方尽量写变量,可以帮助少写代码和后期维护,如下(如果路径变动,只需要改变量,用编辑器批量修改也可以,只是下面这样更优雅一点):

  

//##IMG
@img-path:      ‘../img‘;

//img button
@weixin:        ‘@{img-path}/[email protected]‘;
@weixin-hover:  ‘@{img-path}/[email protected]‘;
@qq:            ‘@{img-path}/[email protected]‘;
@qq-hover:      ‘@{img-path}/[email protected]‘;
@weibo:         ‘@{img-path}/[email protected]‘;
@weibo-hover:   ‘@{img-path}/[email protected]‘;
  • 一般页面的色系是设计师确定了的,把所有要用到的颜色写成变量,统一管理
  • 采用以下盒子模式,元素指定的任何内边距和边框都将在已设定的宽度和高度内进行绘制
*{
    -webkit-box-sizing: border-box;
    -moz-box-sizing: border-box;
    box-sizing: border-box;
}

js:

  • 根据页面,模块划分目录结构
  • jq的变量用$符号开头
  • 使用全局js变量加上window,比如: window.map,目的是后期维护,一眼就能知道这个是全局变量,节约一些看代码的时间
  • 注意异步和同步对逻辑造成的影响
  • 用变量来存储JQ或原生选择器选择的要多次调用的dom,优化性能
  • 学会封装一些工具类,减少开发成本
  • 搞清作用域的变化情况
  • 移动端也推荐用JQ,不用zepto
  • 使用requireJS、browserify等模块管理工具来管理js
  • 移动端记得使用fastclick

html:

  • 抽离公用模块,footer、header、modal等
  • 小心代码换行造成的文字空格问题
  • 感叹号等符号尽量用英文符号,中文符号间距较大,导致一些居中效果看起来没居中
  • 使用模板继承,好处大大的
  • 别再用超级长的document申明了,看到就受不了,直接<!doctype html>
  • dom的display:none的时候,去操作它,会容易有一些问题出现

思想:

  • 不要太追求技术的流行程度,不要跟风,多做对比,使用适合项目的技术
  • 页面中别用太多动效,动的多了反而头晕,不要为了技术而在项目中炫技
  • 别敷衍了事,有问题别觉得自己解决不了,勇于承担,一点点发掘,多注意细节,总会解决的
  • 遇到需求先找网上有没有合适的三方插件,有就用,效率优先;没有就自己写,其实非常有趣味
  • 思考清楚再下手,边试边写,效率低,bug多
  • 多看文档,多补知识,不要依赖问人,费时间且没有成长
  • 不推荐买一大堆书,然后都没看完
  • 推荐写博客,比网上或者当面技术交流有效果
  • 多了解非技术的知识,个人成长的瓶颈往往不是技术
  • 融入团队,站在什么层面想问题,最后就在什么层面做事情
  • 最后一点:遇到喜欢的妹纸不要怂

欢迎留言补充,关于一些细节的注意点、怪异情况等等

以上只是一些点,每个点都可以延伸很多知识。

时间: 2024-11-06 18:40:11

前端乱炖,总结一些细节点的相关文章

HTML精确定位之位置参数乱炖一锅

一.前言 公司项目,需要在一个图片的右上角放置一个类似“X”的东西(其实是需要显示一个数字,就像微信一样,在右上角显示几个消息),然后需要用到html的定位,看了几个网上的例子,恍惚间看到了一个offset,好奇心驱使,去查了一下html的offset,居然“拔出萝卜带出泥”(理解字面意思就行),居然搂出一箩筐的东西,不深究一下心里直痒痒(好奇心害死猫~),所以网上到处查,但是看来看去,刚看出一点眉目,别人评论我看的文章说“说的不对,误人子弟”,自此网上陷入“罗生门”,没办法,只能挽起裤脚,脱掉

5.5 前端学习笔记--domReady,元素节点

HTML DOM 即文本对象模型 HTML标签必须通过浏览器解析后才会成为DOM CSS HTML--->渲染引擎--->浏览器显示 图片 渲染流程(结构的渲染): 解析HTML 构建DOM树-->构建渲染树(解析样式信息)-->布局渲染书(布局DOM节点)-->绘制渲染书 绘制DOM节点 实现策略: 1.使用计时器 setTimeout()超时 2. window.onload=function(){...} 页面所有元素都加在完毕才出发函数更安全.但是仅仅只限于在资源少的

前端乱煮之javascript学习笔记三

1 DOM即为文档对象模型,在html页面加载完成后,浏览器会创建页面的文档对象模型,它看来像是一棵树,有根节点,以及其他的节点. 而通过可编程的对象模型,javascript可以获得创建动态HTML的能力.比如,javascript可以改变HTML所有的元素.可以改变这些元素的属性.可以改变这些元素的样式和能对该页面内的事件作出反应. 2 要想对页面内的元素进行操作,首先就要获得这个元素.通常有三种获得元素的方法,分别是 通过Id来获得元素: 通过标签来获得元素: 通关类名来获得元素: 3 通

使用组件的细节点

使用is属性,解决模板标签的出现bug的问题,data在根主件可以是属性,在子组件中data必须是函数,在组件中添加ref,这样在组件中可以使用$ref来获取相应的dom阶点,例如 <div ref="hello" @click="handle"> hellworld</div> methods: { handle () { console.log (this.$refs.hello.innerText); }},在组件中通过这种方式获取到的

使用组件要注意的细节点

<!DOCTYPE html> <html> <head> <title></title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <script src="./vue.js"></script> <!-- <script src="

vue_组件细节点

1.子组件的is使用 2.子组件的data函数 3.ref的使用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Document</title> <style type="text/css"> .activated {color: red} </style>

前端乱煮之javascript学习笔记一

1 javascript有六种数据类型,分别为:数值类型.字符串类型.布尔类型.对象.null和defined,其中对象包括了函数对象.数组对象等.而这六种数据类型中,除了对象,其他五种全是基本数据类型.对于这些类型中的null和defined,它俩之间的区别在于,defined为未初始化的数据类型,而null则为初始化了的类型,它的值即为“null”. 2 不同于其他编程语言,javascript语言中的数据类型都是弱类型,通过var关键字就可以声明一个类型的变量.而与其他编程语言一样,jav

前端乱煮之javascript学习笔记二

1 javascript的隐式转换规则: 若有布尔类型,则将它转换为数值进行比较. 若有NaN,一律返回false 若是字符串,则分为三种情况:对方为字符串就直接比较,对方为数值,则将字符串转化为数值,若对方为对象,则将对象用toString()的方法进行转换,然后再比较.最后,若是其他,则一律返回false. 若是数字,如果对方是对象,用valueOf()进行比较,其余一律返回false null 和defined不会进行类型转换,但是二者相等. 2 javascript中的break和con

前端乱煮之javascript学习笔记五

1 window对象: 所有浏览器都支持window对象,它表示浏览器窗口.所有javascript的全局对象.全局函数以及变量都自动成为window对象的成员.全局变量是window对象的属性,全局函数是window对象的方法. 确定浏览器可视窗口的尺寸大小(除去工具栏和滚动条)的三种方法: (1)window.innerHeight 得到浏览器的可视高度,window.innerWidth得到浏览器的可视宽度.(Internet Explorer.Chrome.Firefox.Opera 以