尽管接触大大小小项目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. Linux基础篇九:用户管理

    查看当前用户的ID信息(也可以查看其他用户的ID信息) 每个进程都会有一个用户身份运行 cat /etc/passwd 账号的操作: useradd  (新建用户) 例题:   groupadd  s ...

  2. 关于guava实现线程池

    private ListeningExecutorService executorService = MoreExecutors.listeningDecorator(Executors.newCac ...

  3. LGOJ4450 双亲数

    Description link \[\sum \limits_{i = 1}^A \sum \limits_{j = 1}^B [ \gcd(i, j) = d] \] 要\(O(\sqrt n)\ ...

  4. dedecms_5.7 download.php SQL注入

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

  5. java连接access的用户名、密码异常Decoding not supported解决

    Java通过ucanaccess对Access数据库.accdb文件连接: public static Connection getConn() { try { String dbURL = &quo ...

  6. Yii框架的学习指南(策码秀才篇)1-3 我是这么学习的yii framework (不间断更新中)

    Ⅰ.基本概念一.入口文件入口文件内容:一般格式如下:<?php $yii=dirname(__FILE__).'/../../framework/yii.php';//Yii框架位置$confi ...

  7. [LC] 77. Combinations

    Given two integers n and k, return all possible combinations of k numbers out of 1 ... n. Example: I ...

  8. [LC] 139. Word Break

    Given a non-empty string s and a dictionary wordDict containing a list of non-empty words, determine ...

  9. 年度Java技术盘点,懂这些技术的程序员2019发展大好

    与一年前一样,Java仍然是最流行的编程语言.据TIOBE的数据显示,几十年来,Java比其他语言更常名列榜首,Java因为它拥有可移植性.可扩展性和庞大的用户社区,所以许多知名互联网公司使用Java ...

  10. Weave实现跨主机容器互联

    安装与启动 直接从github下载二进制文件安装. docker_host1(服务器1): 下载weave # sudo wget -O /usr/local/bin/weave https://ra ...