在更大的项目上处理 javascript 的方法?

2024-01-27

几年前发现 jQuery 后,我意识到无需编写代码书籍即可真正创建交互式且用户友好的网站是多么容易。随着项目规模的增加,进行任何调试或可能实现更改或新功能所需的时间也随之增加。

通过阅读各种博客并保持一定的更新,我读到了类似的库骨干网.js http://documentcloud.github.com/backbone/ and JavaScriptMVC http://www.javascriptmvc.com/这两种听起来都是不错的选择,可以使代码更加模块化和分离。

然而,由于距离 Javascript 或 jQuery 专家还很远,我并不是真的不适合告诉一个项目中什么是好的基石,在这个项目中,未来的可维护性、调试和开发的简易性是优先考虑的。

因此,考虑到这一点 - 在启动一个 Javascript 和 jQuery 代表大部分用户体验和向用户呈现数据的项目时,常识是什么?

多谢


Backbone.js 和 JavascriptMVC 都是使用框架以合理的方式组织大型项目的绝佳示例(芽核 http://www.sproutcore.com/ and 卡布奇诺 http://cappuccino.org/也很好)。我绝对建议您选择一种标准方法来处理来自服务器的数据、处理来自 DOM 的事件和来自服务器的响应以及视图创建。否则,这可能是一场维护噩梦。

除了 MVC 框架之外,您可能还应该为这些问题选择一个解决方案:

  • 依赖管理:如何以正确的顺序编译和加载 javascript 文件?我的建议是要求JS http://requirejs.org/.
  • 测试:测试 UI 代码从来都不是一件容易的事,但是 jQuery 的人已经做了一段时间了,他们的测试工具QUnit http://docs.jquery.com/Qunit有充分的记录/测试。
  • 缩小:在部署到生产环境之前,您需要缩小代码,RequireJS 内置了此功能,但您也可以使用闭包编译器 http://code.google.com/closure/compiler/如果你想获得疯狂的小源。
  • 构建系统:所有这些工具都很棒,但您应该将它们全部集中在一个主构建系统中,以便您可以在命令行上运行简单的命令并调试或生产应用程序。使用的具体工具取决于您选择的语言 - Ruby =>Rake http://rake.rubyforge.org/, Python -> 编写你自己的,NodeJS作为构建工具(我最喜欢这个选项)->Jake https://github.com/jcoglan/jake

除此之外,请注意是否有某些东西感觉笨重或缓慢(无论是工具还是框架)并进行重构。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在更大的项目上处理 javascript 的方法? 的相关文章

随机推荐

  • jQuery Ajax 在 Android 平板电脑浏览器上失败

    我正在开发一个三星平板电脑 http www samsung com global microsite galaxytab 10 1 index html有默认浏览器 国际空间站告诉我这个信息 Mozilla 5 0 Linux U And
  • 由于在 url 中附加参数,控制器被调用两次

    我在 AngularJS 中 我正在尝试使用在 url 中附加参数 location search sid key key 的值是通过 http 请求来自另一台服务器的 这是附加参数的代码 config routeProvider func
  • 如何在 swiftUI 中以编程方式设置安全文本字段和普通文本字段

    SwiftUI 有两种不同形式的文本字段 一种是隐藏输入的 SecureField 和不隐藏输入的 TextField 有没有一种方法可以创建一个单一视图 该视图接受一个参数来创建两种类型 同时重复尽可能少的代码 而不是创建两个单独的视图
  • Firebase 权限被拒绝错误

    我是 firebase 的初学者 并试图从我的数据库中获取价值 但它每次都向我显示同样的错误 W SyncTree Listen at child failed FirebaseError Permission denied 我的火力规则
  • 根据键名称选择枚举值

    我有一个像这样的枚举 public enum Animals CatOne 12 CatTwo 13 CatThree 14 DogOne 21 DogTwo 22 Great 现在我想获得所有猫的值 我想做的是 public static
  • 运行junit测试时是否可以进入android的调试模式?

    通常我使用运行junit测试adb shell am instrument w com android contacts tests android test InstrumentationTestRunner 它确实有效 它将运行我所有的
  • JDBC 字符串中的 Mysql 会话变量

    我使用这个连接字符串从java连接到mysql jdbc mysql localhost 3306 db noDatetimeStringSync true useUnicode yes characterEncoding UTF 8 是否
  • Microsoft Help Viewer可以作为独立的应用程序使用吗?

    我有一台机器视窗8我安装的地方VS2013没有帮助查看器 and a 虚拟机与相同的OS和相同的VS但随着帮助查看器已安装包 Help Viewer v2 1 我已经创建了那个VM出于独特的目的 我希望能够使用微软帮助查看器 或其他替代软件
  • 神秘的填充物..?

    我最近设计并完成了 2 份时事通讯 但是当我回去进行快速更改 在容器外部添加背景颜色 时 我意识到内容和背景颜色之间存在一些神秘的填充 我想要完成的是获取背景颜色正好与主要内容的边缘相对应 我已经对 CSS 进行了很多尝试 但仍然没有找到解
  • 如何将具有自定义 ID 的文档添加到 firestore

    是否有机会使用自定义生成的 id 而不是由 firestore 引擎生成的 id 将文档添加到 firestore 集合中 要使用自定义 ID 您需要使用 set 而不是 add 这将创建一个 ID 为 LA 的文档 db collecti
  • AWS API Gateway 二进制损坏

    我遇到一个问题 我的 API 网关 Lambda 集成正在通过 API 网关进行某种形式的内容映射 我有一个 API 网关 其端点使用 Lambda 代理集成 我已启用二进制媒体类型 图片 jpeg 图片 png 图片 网页 图像 端点获取
  • Python argparse 不带参数的命令行标志

    如何向命令行参数添加可选标志 例如 所以我可以写 python myprog py or python myprog py w I tried parser add argument w 但我只是收到一条错误消息说 Usage w W er
  • 从回调中返回值

    我以前没有任何 JavaScript 经验 我正在尝试实现以下函数 我希望用它来返回值 lat 和 lng function get address var geocoder new google maps Geocoder geocode
  • 如何测试泛型接口的类型?

    我不确定标题是否有意义 但我希望您能通过一些代码理解我的问题 给出以下发布 订阅框架的代码 type IMessage interface B1794F44 F6EE 4E7B 849A 995F05897E1C end ISubscrib
  • 从纬度/经度获取邮政编码

    我有一个控件 允许用户输入邮政编码或在 iframe 中打开谷歌地图 然后单击地图来选择位置 我目前已经完成了所有工作 iframe 会将点击事件中的纬度 经度发送回父级 我还设置了一个数据库表 其中的纬度 经度字段映射到邮政编码 但是 纬
  • 如何在其派生类中重写列表的切片功能

    我做了一个如下所示的课程 class MyList list def init self lst self list lst 我希望在 MyList 中覆盖切片功能 您需要提供定制 getitem http docs python org
  • 当我运行这个小鼠标钩子应用程序时,为什么我的鼠标出现滞后?

    这是我几年前编写的一个小鼠标钩子应用程序 我只是想知道为什么每当我运行它时它都会使我的鼠标滞后 我记得在某处读过 我必须调用一些方法来手动处理资源或使用 MouseListener 进行处理 每当我拖动时 它都会使我的鼠标滞后any屏幕周围
  • c# 使用excel打开xml文件[重复]

    这个问题在这里已经有答案了 如何使用 Excel 和 C winforms 打开 xml 文件 我正在将数据保存到 XML 文件 并且我需要用户在应用程序更新 xml 文件后能够立即看到该文件 我需要用 Excel 打开该文件 Proces
  • git-tf checkin 线程“main”中出现异常 java.lang.StackOverflowError

    我正在尝试使用现有的 git 存储库并使用 git tf 将其签入到 TFS Preview 当我尝试签入时收到错误 这是我到目前为止所做的事情 git 克隆 bhttps github com https github com git 来
  • 在更大的项目上处理 javascript 的方法?

    几年前发现 jQuery 后 我意识到无需编写代码书籍即可真正创建交互式且用户友好的网站是多么容易 随着项目规模的增加 进行任何调试或可能实现更改或新功能所需的时间也随之增加 通过阅读各种博客并保持一定的更新 我读到了类似的库骨干网 js