每当执行特定任务时都会遇到困难,这可以通过客户端代码或使用服务器代码来完成,这应该是首选的?
例如:
我可以遍历一个javascript对象并构造一个字符串,然后将其发送到服务器,或者我应该发送javascript对象并在服务器中处理它?</ p>
我的观点:每当遇到这种情况时,我都会使用客户端代码,因为它减少了服务器上的计算负担。
在这种情况下需要做些什么?哪种方法正确?
答案 0 :(得分:1)
字符串操作在服务器端非常快,但在客户端也可以。但是,确保在字符串到达服务器端后对其进行验证,因为任何客户端都可以使用字符串将请求复制到服务器并尝试引发问题。
答案 1 :(得分:1)
(这个答案假设一个网络编程上下文)
我个人在客户端运行的Javascript中加入了很多前端逻辑,因为即使对于连接速度慢的人来说,它也会让事情变得非常敏感。这也意味着即使用户离线,某些功能仍可继续工作。我发现一些程序员使用AJAX来完全不需要与服务器进行通信。
使用这种技术时,如果可能的话,我发现在页面中嵌入所有前端Javascript可能需要的数据是有帮助的,所以它不必返回并请求使用AJAX调用从服务器获取更多数据。 (一般情况下,无论何时通过高延迟通道传输数据,您都希望以大块的形式发送数据,这样客户端就不必再经常回来了。这同样适用于数据库查询:您通常可以增加通过单个查询拉回您可能所需的所有数据,而不是进行大量细粒度查询。即使您最终没有使用所有这些数据,性能仍然通常是更好。)
一个警告:除非你非常自律以保持组织有序,否则通过动态生成HTML以响应用户操作来更新UI的Javascript会变得非常繁琐。如果Javascript也是使用另一种语言(在服务器端运行)动态生成的,那么事情就会变得非常可怕。
可测试性在任何应用中都很重要。如果您使用Selenium之类的东西,测试组合客户端/服务器Web应用程序可能不是问题,但如果您不是,那么测试服务器端代码可能会更容易。
正如其他人所说,您还必须确保不破坏安全性。不要指望人们只会以您提供的方式调用服务器端代码。查看服务器处理的所有类型的请求,形成一个“API”,人们可以使用任何参数和任何顺序调用它们。
答案 2 :(得分:0)
您必须考虑很多因素,包括特别是安全因素。例如,如果您必须进行一些复杂的表单验证,那么在服务器端执行它是非常重要的,即使这会给服务器带来更多负载。
请记住,坏人可以更改/破坏您的javascript并将无效(或可能是恶意)数据发送到服务器。
在网络编程方面,最重要的一条规则是:
永远不要相信用户。有什么。周期。强>
在您的情况下(使用String),您可以在客户端执行此操作并在服务器上验证它是否正常。
答案 3 :(得分:0)
我是django / python开发人员,我的逻辑是“模板应该用于渲染”。我在客户端保持最小负载,所有计算都在服务器端完成。
这样做的另一个原因是因为用户不可信任。为用户保持方程式简单。