尽管接触大大小小项目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. ubuntu下pycharm的安装

    打开百度,输入pycharm下载,点击下图的第二个英文链接. 进入后选择linux下的Community进行下载,而左边的Professional是要钱购买的,当然花钱的体验效果肯定会更好. 下载完成 ...

  2. php 连接oracle插入多张图片的方法

    php连接oracle数据库的时候,其查询.更新.删除数据和MySQL类似,但是增加数据.特别是图片的时候就很不一样,这里面涉及到要创建一个blob对象,用blod对象去保存php图片,下面是当插入多 ...

  3. redis维护节点常用操作

    维护节点 添加主节点 hash槽重新分配 添加从节点 删除结点 1 添加主节点 集群创建成功后可以向集群中添加节点,下面是添加一个master主节点 添加7007结点作为新节点 执行命令:./redi ...

  4. PhpMyadmin各版本漏洞合集

    1.PhpMyAdmin存在PREGREPLACEEVAL漏洞 影响版本: 3.5.x < 3.5.8.1 and 4.0.0 < 4.0.0-rc3 利用模块: exploit/mult ...

  5. dedecms_5.7 download.php SQL注入

    最近在看Web渗透与漏洞挖掘,这本书的编写目的感觉非常的不错,把渗透和代码审计结合在一起,但是代码审计部分感觉思路个人认为并不是很清晰,在学习dedecms v5.7 SQL注入的时候就只看懂了漏洞, ...

  6. spring boot 配置文件properties和YAML详解

    spring boot 配置文件properties和YAML详解 properties中配置信息并获取值. 1:在application.properties配置文件中添加: 根据提示创建直接创建. ...

  7. python-django-celery的安装和配置_20191122

    celery的介绍 celery有三个核心的概念: 任务的发出者(需要发邮件的一方),我们项目的代码就相当于发出者, 中间是一个任务队列(中间人broker),这里我们使用Redis来承担任务队列的作 ...

  8. java和javac命令

    记录一下,今天无意中用到单独编译和执行某个java类,遇到各种Error: Could not find or load main class等问题,解决方案如下其中2和3选其一试试~ 1.javac ...

  9. com.spotify:docker-maven-plugin 报localhost:2375 Connection refused 错误

    当用maven build项目时出现了如下错误: Failed to execute goal com.spotify:docker-maven-plugin:0.4.13:build (defaul ...

  10. pycharm全局搜索快捷键无反应

    原因:和搜狗输入法的快捷键冲突