尽管接触大大小小项目N多个,但是刚入行两年,

撸码还是没有完全成一定的规律;最近受到很多启发,打算沉淀沉淀自己的代码;

之前很多页面的很多js脚本本分代码,更注重效果,事件久后没有发展 性能也是很关键的一部分;

之前接触的大多是网站微站门户app的项目,从某种角度来讲   一次(多次)成型后就上线了,不注重逻辑层是否真的合理,精简;

自从接触平台类型项目    结构层  、表示层、行为层的优化一个比一个重要。

逻辑层代码需要提高注意的地方——代码的封装及方法的兼容性。

一个非常简单的抽屉效果

<script>
$(function () {
$(".ability_content .ability_title").click(function () {
var data_state = $(this).attr("data-state");
if (data_state == 0) {
$(this).children(".icon").text("+");
$(this).attr("data-state", "1");
$(this).siblings("ul").slideUp();
} else if (data_state == 1) {
$(this).children(".icon").text("-");
$(this).attr("data-state", "0");
$(this).siblings("ul").slideDown();
}
});
})
</script>

修改之前粗糙的写法:

<script>
$(function () {
$(".toggled").click(function () {
if ($(this).parent().next().css("display") == "block") {
$(this).parent().next().slideUp(500);
$(this).html("+");
} else {
$(this).parent().next().slideDown(500);
$(this).html("-");
}
})
})
</script>

定义变量data_state能将需要做判断的属性保存到内存中,减少reflow回流     从而减轻CPU负担

同样的思路去写  信息是否保存成功的案例

<script>
$(function () {
//保存状态判断
(function () {
//获取保存状态
var hd_saveState = $("#hd_state").val();
if (hd_saveState == "0") {
//保存失败
layer.open({
type: 1
, title: "提示"
, content: "<div style='text-align:center;padding:20px;'>保存失败!</div>"
, area: ['300px', 'auto']
, btn: ['确定']
, yes: function (index, layero) {
layer.close(index);
}
});
$("#hd_state").val("-1");
} else if (hd_saveState == "1") {
//保存成功
layer.open({
type: 1
, title: "提示"
, content: "<div style='text-align:center;padding:20px;'>保存成功!</div>"
, area: ['300px', , 'auto']
, btn: ['确定']
, yes: function (index, layero) {
layer.close(index);
}
});
$("#hd_state").val("-1");
}
})();
})
</script>

检索  事件   自刷新  封装取值便捷思路:

<script>
$(function () {
$(".seach_wrap button").click(function () {
//获取姓名
var nameSearCh = $("#nameSearCh").val();
//获取学历
var EduSearch = $("#EduSearch").val();
//获取简历授权
var enPowerSearch = $("#enPowerSearch").val();
//获取简历状态
var StateSearch = $("#StateSearch").val();
window.location.href = "/Yuan/Pages/talent/Resume_management.aspx?page=0" + getpram('searchText', nameSearCh) + getpram('edu', EduSearch) + getpram('empower', enPowerSearch) + getpram('state', StateSearch);
function getpram(key, value) {
var str = "";
if (value) {
str = "&" + key + "=" + value;
}
return str;
}
});
});
</script>
可通过   getpram函数方便获取要取得四个值对应得value  并返回重载的href中。

交互部分
做前端写交互可谓家常便饭了,交互的步骤不多,但每次用起来都不一样,只是换汤不换药。但自己每次都被搞迷,接触太少,一下是整理了 关闭或发行功能按钮的交互代码:
 //关闭或发行操作
$(".oprate_wrap button").click(function () {
var thisText = $(this).text().trim();
var metaId = $(this).attr("data-mid");
if (thisText != "查看") {
postOprate(metaId, thisText, $(this)); // postOprate 函数包含三个对象组成部分 如下:
}
}); /**
* 根据metaId和操作类型 进行 智券的发行或者关闭
* @param metaId
* @param oprateText
*/
function postOprate(metaId, oprateText, clickObj) {
var data = {
"mid": metaId,
"state": oprateText
}
data = JSON.stringify(data);
$.ajax({
type: "post",
url: "/Yuan/Pages/talent/Coupon_management.aspx/Product_UpdateSate",
//data: JSON.stringify(obj),
data: "{ 'data': '" + data + "'}",
dataType: "json",
contentType: "application/json; charset=utf-8",
success: function (data) {
if (data.d) {
var getDatas = data.d.split("*");
if (getDatas[0] == 0) {
pop(getDatas[1]);
} else if (getDatas[0] == 1) {
pop(getDatas[1]);
if (oprateText == "关闭") {
clickObj.html("发行");
} else {
clickObj.html("关闭");
}
}
}
},
error: function (data) {
console.log(data)
pop(oprateText + "失败!");
}
})
}
												

如何优化自己的JS代码的更多相关文章

  1. JS代码的简单重构与优化

    JS代码的简单重构与优化(适合新手) 原文  http://www.cnblogs.com/similar/p/5016424.html Demo . 1 //bad if (age > 20) ...

  2. 也谈谈规范JS代码的几个注意点

    也谈谈规范JS代码的几个注意点 写JS代码差不多也有两年了吧,从刚开始的“初生牛犊不怕虎”乱写一通到后来也慢慢知道去规范一下自己写的代码.这种感觉就像是代码是你的作品,你希望它保持一份不仅干净而且也优 ...

  3. 最新的JavaScript核心语言标准——ES6,彻底改变你编写JS代码的方式!【转载+整理】

    原文地址 本文内容 ECMAScript 发生了什么变化? 新标准 版本号6 兑现承诺 迭代器和for-of循环 生成器 Generators 模板字符串 不定参数和默认参数 解构 Destructu ...

  4. 编写高质量JS代码的68个有效方法(七)

    [20141220]编写高质量JS代码的68个有效方法(七) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  5. 编写高质量JS代码的68个有效方法(四)

    [20141129]编写高质量JS代码的68个有效方法(四) *:first-child { margin-top: 0 !important; } body>*:last-child { ma ...

  6. 原始的js代码和jquery对比

    Even a task as simple as this can be complicated without jQuery at our disposal. In plain JavaScript ...

  7. JS代码的几个注意点规范

    也谈谈规范JS代码的几个注意点 也谈谈规范JS代码的几个注意点 写JS代码差不多也有两年了吧,从刚开始的“初生牛犊不怕虎”乱写一通到后来也慢慢知道去规范一下自己写的代码.这种感觉就像是代码是你的作品, ...

  8. 四十年前的 6502 CPU 指令翻译成 JS 代码会是怎样

    去年折腾的一个东西,之前 blog 里也写过,不过那时边琢磨边写,所以比较杂乱,现在简单完整地讲解一下. 前言 当时看到一本虚拟机相关的书,正好又在想 JS 混淆相关的事,无意中冒出个问题:能不能把某 ...

  9. 试着讲清楚:js代码运行机制

    一. js运行机制 js执行引擎 经常看文章的说到js是带线程的,其实这个说法非常的模糊,准确的是js执行引擎是单线程的,js执行引擎就是js代码的执行器,有了这个概念就可以下来说说js是如何运行的了 ...

随机推荐

  1. bzoj5104 Fib数列(BSGS+二次剩余)

    快AFO了才第一次写二次剩余的题…… 显然应该将Fn写成通项公式(具体是什么写起来不方便而且大家也都知道),设t=((1+√5)/2)n,T=√5N,然后可以得到t-(-1)t/t=√5N,两边同时乘 ...

  2. nginx常见的面试题

    问题1:Nginx是用来干嘛的? Nginx是一个高性能的HTTP和反向代理服务器,这个基本是用来前端服务器集群后做负载均衡和动静分离用的. 负载均衡即是代理服务器将接收的请求均衡的分发到各服务器中, ...

  3. DOM(Document Object Model)

    DOM(Document Object Model):    结点的概念:整个文档就是由层次不同的多个节点组成,可以说结点代表了全部内容.    结点类型        1.元素结点 对于元素结点的n ...

  4. [LC] 1007. Minimum Domino Rotations For Equal Row

    In a row of dominoes, A[i] and B[i] represent the top and bottom halves of the i-th domino.  (A domi ...

  5. 吴裕雄--天生自然python学习笔记:python 用firebase实现英文电子词典

    Firebase 版电子词典 学英语是许多 人一辈子的麻烦 . 所以本例中,我们开发一个英汉词典,用户执 行程序后,单击“翻译”按钮即可显示该单词的中文翻译 . 英汉词典标准版 因为这个案例的数据必须 ...

  6. poj 1463树形dp 树的最小覆盖

    #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #i ...

  7. single-value grouping |limit grouping|cutpoint grouping|Lower class limit|Upper class limit|Class width|Class mark|rounding error or roundoff error|Histograms|Dotplots|Stem-and-Leaf

    2.3 Organizing Quantitative Data group quantitative data: To organize quantitative data, we first gr ...

  8. 《C 程序设计语言》练习1-4

    #include<stdio.h> /*当celsius=0,1,...,100时,打印摄氏温度与华氏温度对照表; 浮点数版本*/ main () { float fahr,celsius ...

  9. C++线程池的实现

    线程池,简单来说就是有一堆已经创建好的线程(最大数目一定),初始时他们都处于空闲状态,当有新的任务进来,从线程池中取出一个空闲的线程处理任务,然后当任务处理完成之后,该线程被重新放回到线程池中,供其他 ...

  10. python-django框架-电商项目-项目部署_20191127

    python-django框架-电商项目-项目部署: uwsgi作为web服务器: 在pycharm中启动项目:使用python manage.py runserver 这个runserver是dja ...