如何规范.net中的js开发(1)概念篇(更新版)

本地自动化扫描:让SonarQube在提交前,为你拦截.NET/JS代码中的“坏味道” 日常开发中,代码的“坏味道”(冗余、漏洞、不规范写法)往往到提测或上线后才被发现,返工成本极高。本文分享一套**本地提交前的SonarQube自动化扫描方案**,覆盖.NET Core、.NET Framework、JS/TS/GO等主流项目,帮你提前拦截问题代码,从源头保障代码质量。 阅读详情

来自:http://www.cnblogs.com/ASPNET2008/archive/2011/01/08/1930895.html

工作这么几年,发现有些公司的开发人员虽然个人能力非常强,但是看不出团队成员之间在开发思想上的共同点,基本是一个人一个编程风格,每个人都有每个人的实现方式。或者是存在相似点,但只是冰山一角而已,团队没有统一的编程风格,时间长了,在代码维护上越来越成问题,设想当一个开发人员离职后,其它人如何接手他的工作,他写的代码其它人能在短时间内看明白吗?
   
     这里我来分享下我们公司在网站开发中对于js这块是如何规范的。说到在.net网站中编写js,如果是从事B/S架构开发的朋友再熟悉不过了,没有什么难度,只要懂点js脚本知识,再加上熟悉一到两个js框架,例如jquery,prototype,就能写出功能强大的网页交互程序。但是大家有没有考虑到如下问题呢?
  
     第一:js脚本在网页加载过程是会中断网页的渲染的,只有当这段脚本执行完成后,后面的网页才能加载,如何避免这种问题?
            有人可能会想到jquery因为它可以将需要执行的脚本在DOM加载完后才执行,这样就不会妨碍网页首屏的加载,增强了用户体验性。或者可以通过在script标签上增加defer来完成等等。所以,由于js脚本会中断网页渲染,所以尽量避免在网页元素中插入js脚本块,尽量把脚本都放在页脚后面。
       
     第二:如何给网页元素绑定事件?
            是在网页DOM元素上显示绑定吗,例如<input onclike="test()" value="test"/> ,这样做有三个缺点:
            1:不利用html展示,程序员开发的网页往往来自设计师的html,如果在拿到设计师的html后,再在对应的元素上增加各种各样的事件,下次有问题,设计师和你调试网页时就会非常别扭。
            2:如果设计师重新给你一份重新设计后的html,改动较大,此时你如何做呢,如果把事件显示的绑定在元素下,那这次你需要重新再写一次,我想这种事情大家都不想看到吧。
            3:显示在元素上绑定事件会在某种程度上影响网页的加载,特别是绑定js有错误产生时。
        
      第三:当网页上有众多元素需要绑定事件时,有没有更好更简洁的方法呢?
             上面的第二个问题,一般我们的解决方案就是采用事件后绑定,即在DOM加载完成之后,通过编程的形式给某些元素手动绑定上事件。但这种绑定事件过多时,也会显得程序的臃肿。这里我们可以通过事件冒泡的特点来实现事件的统一绑定。
             例如:有这样的一段html,有五个元素需要绑定事件,通常我需要需要根据不同的DOM绑定五次,但我们可以利用事件冒泡的特点,在五个元素的父元素上绑定一次即可。

复制代码
代码
  < div >
            用户名:
< input  id ="username"  type ="text" />
             密码:
< input  id ="password"  type ="password" />
             确认密码:
< input  id ="repassword"  type ="password" />
             地址:
< input  id ="adress"  type ="text" />
             
< input  id ="submit"  type ="button"  value ="提交" />
        
</ div >
复制代码

 

 

            改良后的代码:在五个元素共有的父元素上定义一个id:divtest,然后在五个需要绑定事件的元素上增加自定义属性mth,最后就通过程序获取这个mth来判断用户操作的是哪一个元素。    

复制代码
代码
< div  id ="divtest" >
            用户名:
< input  mth ="username"  type ="text" />
             密码:
< input  mth ="password"  type ="password" />
             确认密码:
< input  mth ="repassword"  type ="password" />
             地址:
< input  mth ="adress"  type ="text" />
             
< input  mth ="submit"  type ="button"  value ="提交" />
        
</ div >
复制代码

 

         

复制代码
代码
iniEvt:  function  () {
        
this .divtest.bind( " click " ,  this .onClickdivLogin.bindAsEventListener( this ));
    },
    onClickdivLogin: 
function  (evt) {
        
var  element  =  Event.element(evt);
        
var  method  =  element.attr( " mth " );
        
switch  (method) {
           
case   " username " :
                alert(element.html());
                
break ;
            
case   " password " :
                alert(element.html());
                
break ;
                .....

        }
    },

复制代码

 

        
      第四:一般开发人员对于asp.net的page类生命周期都比较了解,分初始化,页面加载,页面卸载等过程,我们根据程序执行的顺序很容易能定位到我们想要查找的代码,如果一个网页中包含了大量的js,那么怎样才能快速定位我们关心的代码呢,是不是也可以把js的加载分成为不同的周期呢?答案是肯定的。
       
      第五:js开发的规范并不是多余,而是可以大大提高代码的可维护性,有了规范,大家写的js风格一致后,再查找别人写的代码时就不会感到无从下手了。
  
     下面是我们公司在规范js开发所做出的努力,经过一年的应用,大家都是非常认可的,原则上针对一个页面,有一个单独的js,在它之上会有一个框架性的js,我们公司是采用jquery,有其它的框架也行。这里我来分享下单独页面js的一个模板:采用了面向对象的形式。
  
      js模板主要分为以下几个部分:
   

代码
复制代码
var  BlogInfoControl  =  BlogInfoControl;
BlogInfoControl 
=  Class.create();

Object.extend(BlogInfoControl.prototype, {
    name: 
" BlogInfoControl " ,

    
// 初始化
    init:  function  (options) {
        
this .initDOMElement();
        
this .initEvt();
        
this .initData();
        
this .pageLoad();
    },
    
// 初始化数据
    initData:  function  () {

    },
    initDOMElement: 
function  () {
        
this .commentPostForm  =  $( " #commentPostForm " );
    },
    
// 评论事件
    commentPostFormClick:  function  (evt) {
        
        
return   false ;
    },
    initEvt: 
function  () {
        
this .commentPostForm.bind( " submit " ,  this .commentPostFormClick.bindAsEventListener( this ));
    },
    disposeDOMElement: 
function  () {

    },
    disposeEvt: 
function  () {

    },

    dispose: 
function  () {
        
this .disposeEvt();
        
this .disposeDOMElement();
    },
    pageLoad: 
function  () {
    }
});

$(document).ready(
function  () {
    
var  client  =   new  BlogInfoControl();
});  
   
复制代码

 


   1:生成一个类BlogInfoControl = Class.create();这点借用了prototype的优点,熟悉它的朋友应该知道。
   2:initi,它是最关键的函数,则它来完成所有的初始化事情,例如服务端变量,网页DOM的定义,网页DOM事件的绑定等。
   3:initDOMElement,这里可以完成一些DOM元素的定义。
   4:initData,完成一些服务端数据的定义,我们经常会把网页后台计算的结果输入出前端,然后由前端来完成最后的页面渲染。
   5:initEvt,网页DOM元素的事件绑定。
   6:disposeDOMElement,网页unload时即时销毁对象。
   7:disposeEvt,unbind之前绑定的DOM事件。
   8:dispose,调用disposeDOMElement,以及disposeEvt,主要目的是为了防止内存泄露。
   9:pageLoad,类似webform类的pageload,完成网页渲染。
   10:$(document).ready(function (),通过jquery提供的函数,完成最后的js加载以及代码执行。
  
    js模板开发的优点:面向对象的写法比传统的JS对程序员比较友好,统一的JS加载模型,清晰把代码从逻辑上分开,在代码阅读以及维护上都大有提高。
   
    js模板开发的 缺点:需要一定的JS框架做支持,以及对JS知识有一定要求,如果是规模不大的网站,也大可不需要这样做。
  
    总结:JS开发规范,适用于团队人员较多,注意页面交互以及用户体验的项目。
   

     说明:文中的代码如有雷同,也只属于技术上的思想雷同,绝对不存在什么技术剽窃之类的说法,就像大家说的一样,jquery,prototype都是开源的,这点前端开发规范也什么值的剽窃的。

 


作者:姜敏
出处:http://www.cnblogs.com/aspnet2008/ 


.NET开发规范:从故障教训到工程契约的实战指南 在软件工程中,编码规范远不止格式统一,而是保障可维护性、协作效率与系统稳定性的底层契约。基于.NET平台的CLR安全机制、BCL向后兼容特性及C#多范式语言设计,规范需兼顾运行时行为约束(如internal可见性控制)、性能优化路径(如async/await替代BeginXXX)和编译器协同能力(如LINQ表达式树翻译)。实践中,命名语义化、属性无副作用、泛型参数可推导等规则,直接对应线上资损、N+1查询、内存泄漏等高频故障根因。本文结合真实事故还原与重构案例,系统阐述如何将.NET开发规范落地为可执行、可 阅读详情

相关推荐

JS.NET开发

JS.NET开发JS.NET开发JS.NET开发JS.NET开发JS.NET开发JS.NET开发JS.NET开发

一个纯.Net开发的JavaScript执行引擎

Jurassic是一个开源的托管JavaScript执行引擎,使用MS-PL授权协议。它的目标是成为.NET平台上功能最强,最为标准的JavaScript引擎。

成长的足迹 532

多传感器标定全栈系统学习教程

无论是激光雷达(Lidar)、毫米波雷达(Radar)、相机(Camera)还是惯导(IMU),传感器之间的精确标定直接决定了系统的可靠性与性能。本文将以系统化的视角,梳理多传感器标定的核心知识体系,并分享一套覆盖全栈技术的学习路径。Calibration)是实现点云与图像融合的前提,而雷达与车辆的标定(Radar2Car)则是精准速度估计的关键。:Lidar2Car、Camera2Car的快速标定流程,标定板布置规范。:从单传感器标定入手(如相机内参),逐步过渡到多传感器联合标定。

weixin_41792788的博客 904

如何实现网站的登录功能

如何实现网站的登录功能http://www.bieryun.com/4623.html 我记得我刚刚学习基本PHP的时候,我正在尝试创建一个基本的网站。除了一件事,我还想到了其他一切。我想在我的网站上实现登录功能,我不知道该怎么做。有一些教程解释了创建登录系统,但它们太复杂了。我只想了解逻辑。所以今天在本文中,让我们看看登录系统如何工作以及如何为您的...

weixin_34327761的博客 4119

C++开发基础之掌握常用的三种异步编程模型

以上是三种常见的C++异步编程模型,每种模型都有其适用的场景和特点。根据具体需求,你可以选择合适的模型来进行异步编程。

dotnet研习社 2176

人大金仓集群部署(主备)

4.2 上传安装包镜像和授权文件到install目录下并授权。1、复制系统脚本到/opt/kingbase目录下(主节点)4.2 修改cluster_install.sh。回车进行下一步,直到出现以下界面,回复Y键回车。三、安装kingbase客户端段(都要安装)install目录作为安装包具体存放目录。4.1 修改install.conf文件。2、复制授权文件到安装目录下(主节点)3、修改ssh参数(节点都要配置)5、安装kingbase客户端。二、基本环境配置(都要配置)6、数据库集群安装(主节点)

edutech_wang的博客 1996

.NET项目JS前后台调试

  在进行.net项目的时候,很多的时候对于整个系统不是很熟悉,出现了错误不能很快的定位到页面的关键,小编经过了一番的折腾,终于有点起见了,介绍一下过程。   那“保存”按钮为例, 找到你想要定位的元素,然后鼠标移动上去,右击,选择“审查元素”,就会跳到我们页面的调试界面;现在拿“保存”按钮为例; ...

Smily-王婷婷 557

用STC8单片机解码EV1527遥控信号:从波形分析到C代码实现(附完整库)

本文详细介绍了如何使用STC8单片机解码EV1527遥控信号,从波形分析到C代码实现的完整过程。内容包括EV1527协议解析、硬件搭建、信号捕获技巧、解码算法实现及优化策略,并附有完整库代码,帮助开发者快速实现智能家居设备的无线控制。

weixin_34093995的博客 295

转 如何规范.net中的js开发(1)概念篇(更新版)

工作这么几年,发现有些公司的开发人员虽然个人能力非常强,但是看不出团队成员之间在开发思想上的共同点,基本是一个人一个编程风格,每个人都有每个人的实现方式。或者是存在相似点,但只是冰山一角而已,团队没有统一的编程风格,时间长了,在代码维护上越来越成问题,设想当一个开发人员离职后,其它人如何接手他的工作,他写的代码其它人能在短时间内看明白吗? 这里我来分享下我们公司在网站...

weixin_30496751的博客 79

YOLOv8融合HAttention:激活更多像素的注意力机制科研实践指南

HAttention通过层级化像素激活与融合的设计,为YOLOv8的像素级特征利用能力带来了质的飞跃。从原理理解到代码实现,再到集成调优,每一步都是科研中“解决像素信息遗漏难题”的具体实践。如果你在实验中发现某类细节或大尺度目标的检测仍有不足,可以尝试结合数据增强(如随机裁剪、多尺度训练)来强化模型对像素特征的学习能力。科研的价值在于不断挖掘技术的潜力,希望这份指南能真正帮你在目标检测的像素级特征利用领域找到新的突破点,祝你在科研探索中持续收获创新与成长。

FJN110的博客 106

金砖大赛-第二届网络安全防护治理实战技能大赛全国总决赛WP

格式进行md4加密,然后将小写的md4密文进行作为flag信息进行提交,提交格式为flag{MD4小写},例如调用频率异常高的user_id是user_xxx,使用的非公开模型名称是model-name,具体调用次数为10,那么按照格式,对user_xxx:model-name:10进行md4加密后,提交范例为:flag{dd00cb9e393f4a9ac639294b3cfe4d6a}挖矿木马是通过远程脚本进行部署的,请登录到失陷的服务器上,找到并分析挖矿木马是从那个远程IP下载的。

Laffrey的专栏 240

如何规范.net中的js开发(2)原理篇(更新版)

上篇我大概介绍了我们公司在js开发上所做的规范,我也提到要想实现那样的功能需要一定的框架做为支持,这里所说的框架即对js的一些扩展。这里我们主要结合了两个js框架的优点: 1:prototype,主要应用了它在对Object以及Function上的扩展。本人js知识并不高深,所以对下面的扩展也仅仅能贴些代码以及加上简单的注释供大家参考。 补充...

dhka8040652的博客 106

基于STM32设计的掌上游戏机(运行NES游戏模拟器)详细开发过程

利用STM32单片机移植NES游戏模拟器,完成NES游戏开发,可以玩标准的NES游戏,已测试超级玛丽、魂斗罗之类的都可以正常运行。

4万+

【转载】.NET开发编程规范

https://www.cnblogs.com/Leo_wl/p/3525538.html .NET开发编程规范 第1章程序的版式 版式虽然不会影响程序的功能,但会影响可读性。程序的版式追求清晰、美观,是程序风格的重要构成因素。 可以把程序的版式比喻为"书法"。好的"书法"可让人对程序一目了然,看得兴致勃勃。差的程序"书法"如螃蟹爬行,让人看得索然无味,更令维护者烦恼有加。 1.1版...

weixin_30346033的博客 605

MATLAB基础应用精讲-【数模应用】信用评分模型(附R语言和python代码实现)

信用评分模型是近年来兴起的一种为了保障银行和其他金融部门的金融安全而设立的一种关于人身金融权限的划定模型。该模型指根据客户的信用历史资料,利用一定的信用评分模型,得到不同等级的信用分数,根据客户的信用分数,来决定客户所可以持有的金额权限,从而保证还款等业务的安全性。而随着在现代社会和公司中,贷款,信用卡的作用日渐突出,信用评分模型的发展前景不可估量。信贷风险是指借款人因偿还贷款或履行合同承诺而破产而产生损失的可能性。传统上,它与贷款人无法偿还所欠利息和本金、影响现金流和增加装配成本所产生的风险有关。

qq_36130719的博客 364

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

idiomatic.js终极指南:Node.js环境中的JavaScript代码规范

GitHub 加速计划 / id / idiomatic.js 是一个专注于编写一致、地道 JavaScript 代码的项目,其核心是《Principles of Writing Consistent, Idiomatic JavaScript》,为开发者提供了全面的 JavaScript 代码规范指南。遵循这些规范能让团队协作更顺畅,代码质量更高,维护成本更低。 ## 为什么需要代码规范?

gitblog_00512的博客 414

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

.net软件开发脚本规范V1.0

软件日常开发规范文本 一、基本标准 1.代码和SQL脚本均不要出现无意义的空格和空行。 2.所有SQL脚本确保可以重复运行不出错,添加数据的脚本重复运行不会重复添加数据。 3.能用一行代码或脚本解决的不要写出两行,能用一个方法解决的不要写出两个方法,提高代码的利用率,减少冗余代码。 4.任何地方变量命名不使用无意义的a、b等名称,如人员编号uId,姓名name。 5.SQL脚本中的关键字统一使用大...

吴朋个人博客 446

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

[Asp.net+JS]asp.net中调用javascript自定义函数的方法总结

asp.net调用js函数

CUbuntu 1902

作为.NET开发工程师具备的技能

.NET工程师应具备的七大技能: 一、.NET框架   开发人员应该熟悉.NET FrameWork体系结构和基本原理,熟悉CLR(公共语言运行时)和 MSIL(中间语言),熟悉.NET框架中的委托、线程、序列化、集合、垃圾回收机制、反射等内 容。   (NET框架的博大精深,美丽而深不可测。)   二、面向对象软件开发   开发人员应该熟悉面向对象软件开发(OOP)基本概念,熟悉面向对象软件开发中的类、继 承、封装、多态等概念,具备良好的面向对象软件开发思想和设计原则。   (不论是采用何种软

qq_42717786的博客 3429

Asp.Net编码规范

代码编写规范如下: (c#.net与asp.net) 1 目的    一.为了统一公司软件开发设计过程的编程规范    二.使网站开发人员能很方便的理解每个目录,变量,控件,类,方法的意义    三.为了保证编写出的程序都符合相同的规范,保证一致性、统一性而建立的程序编码规范。    四.编码规范和约定必须能明显改善代码可读性,并有助于代码管理、分类范围适用于企业所有基于.NET平台的软

风之&诉 2358

最全HTML+CSS代码规范书写总结——《项目开发篇》

欢迎阅读并使用个人总结的代码规范, 这个是我借鉴当前各大网站前端代码规范,总结出的HTML+CSS基础代码规范文述其意义就在于,分享个人学习到的东西,和日后为各位在增强团队开发协作、提高代码质量和打造开发基石的编码规范。以下内容便是项目团队开发基本约定的总述,参与开发的小伙伴们可参考遵循哟!!!规范的代码,从根本上降低了项目的开发成本,并保证代码的一致性,同时也提升了整个项目的团队开发的整体效率,这就是规范代码的好处!以上就是所要介绍的前端HTML+CSS代码规范内容,后续即将补充更新CSS的学习目标。..

小柴爱程序的博客 978

总结前端开发中的一些特殊规范

前端日子工作太忙没时间发随笔,现在来总结一些前端开发中的特殊规范(常规的规范就不赘述了),希望能让各位收益,也欢迎提出异议。 一. 文件系统 一个有条理的文件系统可以为后期的维护提供便利,起码寻找某个页面的某张图片时不用对着url地址顺藤摸瓜找半天,如果能做到不看url也能准确猜中某页面文件的所在地,那这个文件系统便是合格的。 先来看一个不合格的文件存放方式: 如上图,该目录...

dcof99817的博客 247

MemReduct 完整指南:免费快速清理 Windows 系统内存的轻量工具

MemReduct 是一个免费开源的 Windows 内存清理与实时监控工具:主界面每秒刷新一次物理内存、分页文件和系统缓存三项占用,点击"清理内存"即可调用底层 Native API 冲洗系统缓存,官方给出的单次回收比例约为 10%~50%。整个程序就是一个几 MB 的 exe,没有后台全家桶,也不带广告。 [![MemReduct 内存清理监控界面:显示物理内存、分页文件与系统缓存占用](h

gitblog_00678的博客 869
上一篇: Linq To Entity经验:如何解决按需所取
下一篇: 看看你的项目多少是可以配置的?
ArvinStudy
博客等级 码龄15年 83粉丝 193原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值