js代码重构
^^var $masterUL =$('#nav'),
$rels = $('#nav').find('[rel^="dropmenu"]');
$rels.each(function(i,el){
var index = $(el).attr('rel').replace('dropmenu','');
$("#dropmenu"+index).insertAfter(el);
});
再短点就是
$('#nav').find('[rel^="dropmenu"]').each(function(i,el){
$("#dropmenu"+$(el).attr('rel').replace('dropmenu','')).insertAfter(el);
});
❷ 请问用html5怎么重构一个已有的网站
对于一个已有的网站,而且在界面上不进行改动,那么主要就是在HTML标签上进行改动一版下,把HTML5的标签用上去即可。权
比如你原来头部可能是这样写的
<div class="header">.........</div>
那么现在你可以用上HTML5的标签
<header>..........</header>
然后有些原来用js实现的东西可以通过html5来实现,当然不支持html5的浏览器最好还是用js来弥补一下。
比如原先你可能验证email是通过js的
<input type="text" value="email" />
现在你可以利用html5
<input type="email" value ="email" />
让浏览器自动验证email,但是js部分最好不要舍弃,还是要保留的,这样的话一些不支持HTML5的浏览器还是能够正常使用的。
网页重构是web前端开发的一部分。
网页重构主要技能是:html+css
web前端开发主要技能:html+css+js
在一些小的公司没有分的那么清楚,职位名称也不叫这个,叫美工,做的工作比较杂,除了上面的,还包括,网页设计和PS。
希望能帮助到您!点赞吧!
❹ 如何通过模块化的方式让javascript代码避免重复执行
可以使用mole模式对代码进行重用和模块化。 假设在文件1.js定义mole如下:
var Mole = (function(plication) {
var _private = '';//private variable here
var plication = {};
plication.foo = function() {
if(...) {
for(...) {
//define your plication here
}
}
};
return plication;//return the public variable
} (Mole || {}));
在你的文件2.js中就可以这样使用:
var Mole = (function(plication) {
return plication;
} (Mole || {}));
Mole.foo();//use the method defined in 1.js
这样就把一个mole分割到了多个文件中,将代码重复部分定义为 public ,彼此可以交叉访问和使用,因为我采用的是松耦合,也可以对函数进行重构,如下:
var Mole = (function(plication) {
plication.foo = function() {
//refactor method foo here
}
return plication;
} (Mole || {}));
而私有部分则定义为 private ,一般不建议访问彼此的私有对象。
❺ 急求一份 Vue.js 2.5 + cube-ui 重构饿了么
介绍
Vue.js(读音 /vjuː/, 类似于view)是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。Vue 的核心库只关注视图层,并且非常容易学习,非常容易与其它库或已有项目整合。另一方面,Vue 完全有能力驱动采用单文件组件和Vue生态系统支持的库开发的复杂单页应用。
Vue.js 的目标是通过尽可能简单的 API 实现响应的数据绑定和组合的视图组件 。
Vue.js 自身不是一个全能框架--它只聚焦于视图层。因此它非常容易学习,非常容易与其它库或已有项目整合。另一方面,在与相关工具和支持库一起使用时,Vue.js 也能完美地驱动复杂的单页应用。
特点
易用
已经会了HTML,CSS,JavaScript?即刻阅读指南开始构建应用。
灵活
简单小巧的核心,渐进式技术栈,足以应付任何规模的应用。
性能
20kb min+gzip 运行大小、超快虚拟 DOM 、最省心的优化。
学习前提
Vue.js 的 API 是参考了AngularJS、KnockoutJS、Ractive.js、Rivets.js。所以建议学习Vue.js之前,对上述 4 个框架系统做些了解。
❻ javascript问题,关于重构window.alert()后,然后调用window原本的window.alert()的方法
我的理解是这样的。
window._alert=window.alert//临时保存一下;
window.alert=function(){
//写你重构的方法;
return;
}
//下面你想恢复的话就很简单了
window.alert=window._alert;
❼ 20行js代码实现的贪吃蛇大战
稍等,我先留个坑,一会儿上电脑看看
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8"><title>贪吃蛇重构</title><style>
body {display: flex;height: 100vh;margin: 0;padding: 0;justify-content: center;align-items: center;}</style>
</head>
<body>
<canvas id="can" width="400" height="400" style="background-color: black">对不起,您的浏览器不支持canvas</canvas>
<script>var snake = [41, 40], //snake队列表示蛇身,初始节点存在但不显示direction = 1, //1表示向右,-1表示向左,20表示向下,-20表示向上
food = 43, //食物的位置
n, //与下次移动的位置有关box = document.getElementById('can').getContext('2d');//从0到399表示box里[0~19]*[0~19]的所有节点,每20px一个节点function draw(seat, color) {box.fillStyle = color;box.fillRect(seat % 20 *20 + 1, ~~(seat / 20) * 20 + 1, 18, 18);//用color填充一个矩形,以前两个参数为x,y坐标,后两个参数为宽和高。}
document.onkeydown = function(evt) {//当键盘上下左右键摁下的时候改变directiondirection = snake[1] - snake[0] == (n = [-1, -20, 1, 20][(evt || event).keyCode - 37] || direction) ? direction : n;};
!function() {snake.unshift(n = snake[0] + direction);//此时的n为下次蛇头出现的位置,n进入队列 if(snake.indexOf(n, 1) > 0 || n < 0 || n > 399 || direction == 1 && n % 20 == 0 || direction == -1 && n % 20 == 19) {//if语句判断贪吃蛇是否撞到自己或者墙壁,碰到时返回,结束程序return alert("GAME OVER!");}draw(n, "lime"); //画出蛇头下次出现的位置if(n == food) { //如果吃到食物时,产生一个蛇身以外的随机的点,不会去掉蛇尾while (snake.indexOf(food = ~~(Math.random() * 400)) >= 0);draw(food, "yellow");} else { //没有吃到食物时正常移动,蛇尾出队列draw(snake.pop(),"black");}setTimeout(arguments.callee, 150);//每隔0.15秒执行函数一次,可以调节蛇的速度
}();
</script>
</body>
</html>
这不是我写的,是我看见的那个网址里面写的详细的。这个提交是电脑端,我发现一提交就自动压缩,乱了。
❽ javascript 为什么要重构
JavaScript是前台代码中重要组成部分,随着版本的延续,产品越做越大,JavaScript层面的重构,需要在整个过程中逐步强化起来。
当代码量达到一定程度,JavaScript最好能够与页面模块组件(例如自定义的FreeMarker标签)一起被模块化。
模块化带来的最大好处就是独立性和可维护性,不用在海量的js中定位问题位置,简单了,也就更容易被理解和接受,更容易被定制。
模块之间的依赖关系最好能够保持简单,例如有一个common.js,成为最通用的函数型代码,不包含或者包含统一管理的全局变量,要求其可以独立 发布,其他组件js可以轻松地依赖于它。举个例子,我们经常需要对字符串实现一个trim方法,可是js本身是不具备的,那么就可以在这个 common.js中扩展string的prototype来实现,这对外部的使用者是透明的。
模块划分和命名空间
使用命名空间是保持js互不干扰的一个好办法,js讲究起面向对象,就必须遵循封装、继承和多态的原则。
参照Java import的用法,我希望命名空间能带来这样的效果,看一个最简单的实例吧:
我有一个模块play,其中包含了一个方法webOnlinePlay,那么在没有import这个模块的时候,我希望是js的执行是错误的:
webOnlinePlay(); //Error! 无法找到方法
但是如果我引入了这个模块:
import("play"); webOnlinePlay(); //正确,能够找到方法
其实实现这样的效果也很简单,因为默认调用一个方法webOnlinePlay()的实质是:window.webOnlinePlay(),对吗?
所以在import("play")的时候,内部实现机制如下:
var mole = new playMole();
对于这个模块中的每一个方法,都导入到window对象上面,以直接使用:
window[methodName] = mole[methodName];
其实这里并没有什么玄机,但是这种即需即取的思想却给前端重构带来了一个思路,一个封装带来的可维护性增强的思路,不是吗?
❾ 求一个ajax重构的js
响应(服务器对浏览器说话): 表现一:PrintWriter out = response.getWriter(); out.write("旺旺");
解决一: response.setContentType("textml; charset=utf-8"); out.write("<meta http-equiv='Content-Type' content='textml; charset=utf-8'>"); meta标记可以省略表现二:jsp中的中文乱码,因为jsp本质上还是Servlet,它的所有内容是通过out.write向客户端发送的。
解决二: <%@ page contentType="textml; charset=utf-8"> 本质上就是:response.setContentType("textml; charset=utf-8"); <meta http-equiv='Content-Type' content='textml; charset=utf-8'> meta标记可以省略
请求(浏览器对服务器说话):request.getParamenter得到客户端请求参数 解决方法一:硬编码 String name = new String(luanName.getBytes("接受"), "发送"); 优点:对get,post请求都有效; 缺点:当请求字段较多时,不利于处理;
解决方法二:只对post有效 request.setCharacterEncoding("gbk"); 必须在request.getParamenter方法调用之前设置。(代码放在第一行)
解决方法三:只对get有效 修改server.xml <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" URIEncoding="GBK" />