您是否应该始终为网站的服务器端编程?


38

我即将开始为朋友创建一个音乐项目网站。现在它应该很简单:没有动态内容(游览日期等),只不过是一些嵌入式样本歌曲或SoundCloud链接。我不希望在响应式网格上使用除香草JavaScript和Bootstrap或Foundation之外的任何东西。

够了吗?我可以简单地将HTML,CSS和JS文件上传到主机并完成操作,还是应该花时间在Node或PHP中对后端服务器进行编程?


54
够了吗 您拥有动态后端可以解决什么问题。保持愚蠢的简单,直到不能。
RubberDuck

25
最大化未完成的工作。亚尼
RubberDuck

9
如果您要做的就是编写一些文本,上传一些图片和一些音乐文件/嵌入一些视频文件/ YouTube,那么最好安装现成的CMS,WordPress等是理想的选择,大多数托管公司都提供一键式安装程序,使您在几分钟之内即可开始工作。...那里有很多CMS。
Kinnectus '16

11
我不知道为什么这样的问题会有这么多的反对?这就像在问“即使不需要存储任何数据,我也必须为我的软件创建数据库吗?”。如果这是一个初学者的问题,这不会令我感到惊讶,但是当您足够熟练地创建引导程序/基础项目时,这不会令我感到惊讶。
Mahdi

14
@Mahdi之所以被否决,是因为五年来每个人都一直在想这件该死的事情,而且没人敢问这个问题。
djechlin '16

Answers:


86

如果您不知道是否需要服务器端代码,则可能不需要*

*注意:当您要内部控制对内容,数据或功能的访问时,服务器端代码对于安全性至关重要。(不一定是您的服务器,请参阅最后一段。)

问问自己,使用服务器端技术会解决什么问题。如果您什么也想不到(就您而言,我也不能),那么您就不需要它们。

请注意,仅使用客户端代码可能会超出您的想象。像AngularJS或ReactJS这样的JavaScript框架可以让您通过使用Ajax的API与第三方动态内容集成。(这包括连接到可以处理其自身安全性的API。)


17
我认为这是一个危险的声明-服务器端技术通常在您“可以在客户端端使用”时使用:出于安全考虑,决定将其移至服务器的决定不一定是出于功能原因。-因此,提倡“不了解”的态度令人担忧:程序员应该始终在任何应用程序中考虑安全性,即使是如上所述的简单应用程序。整个解决方案都应经过仔细考虑-您是否想要一个“安全的”内容区域,在向用户提供mp3之前强迫用户在FB上注册或喜欢?(不过,在这种情况下,静态站点听起来确实不错)
Jmons '16

3
对于静态站点生成器的安全性优势也有话要说。对于许多应用程序而言,静态站点是最终的安全性,因为实际上没有什么可破解的。
弥敦道GoFund莫妮卡·阿瑟

1
Server-side code is essential for security很多开发者没有对安全性提出质疑。直到你把他们的脸扔进他们的烂摊子。我的电话是,如果您需要身份验证,则需要后台。如果需要存储数据,则需要一个后台办公室,在此之前,客户端会再次检查数据。
Walfrat

1
@Walfrat如果您只需要身份验证,则可以将其卸载到任意数量的开放式身份验证服务中,而根本不使用任何后端。另一方面,如果需要授权,则可能需要一些后端的东西。
corsiKa

56

了解有关静态站点生成器的信息。这些允许您以编程方式(使用模板,数据等)创建网站,而不是手工制作HTML。结果是一组不需要任何后端的静态HTML和CSS。

https://www.staticgen.com/列出并列出了许多此类开源生成器;封闭源产品也可能存在。


3
+1,该功能仍适用于时间稍长的动态网站(例如博客和旅游行程)。在内容取决于用户查看页面之前,通常已经足够了。
RemcoGerlich '16

1
+1。客户需要或多或少地更新巡演日期和示例歌曲。静态站点生成器避免了他需要触摸HTML的麻烦,并且比(维护不良的)CMS更简单和安全。
Bergi '16

3
虽然我同意这是OP的好建议,但它是否真的试图回答所提出的问题?
Woodrow Barlow

标记的答案更为笼统,并且与伍德罗·巴洛(Woodrow Barlow)提到的问题相吻合。但是我没有+1 preseting一个很好的解决方案我和许多人可以去
Deegriz

2
@WoodrowBarlow:我认为这Can I simply upload HTML, CSS, and JS files to a host and be done with it, or should I take the time to program a backend server in Node or PHP?确实需要指出,在OP的情况下,有一个第三选项相当吸引人,选项恕我直言:)
Tobia Tesan

6

如果可以您可以并且应该仅使用静态站点,或者使用静态站点生成器。为什么?可维护性。代码有错误。每隔几周就会发现另一个WordPress安全漏洞。如果使用通用CMS,则必须不断对其进行修补。否则,您的朋友网站上将很快包含有关非法药物,ISIS宣传,安装在访问者计算机上的恶意软件的广告,甚至更糟。即使您定期对其进行修补,也可能为时已晚,因此您必须不断检查是否存在黑客入侵。有一些方法可以保护此CMS。安装“安全插件”,配置Web应用程序防火墙,例如mod_security等。所有这些工作都需要做更多。它们也必须保持更新。有时,您的mod_security规则会破坏WordPress的插件,因此您必须分析并修复它。更多的工作。

您可能会认为,没有人会想要破解该网站。但是,由于常见CMS系统中存在常见的安全漏洞,很快就会有自动漫游器爬网/搜索网络并使用该CMS入侵所有网站。他们只想传播自己的链接/恶意软件/宣传。

使用静态网站(手动创建或使用生成器),您就不会遇到此问题。

如果您实现自己的后端,那么它也会有安全漏洞(没有人是完美的),但很可能没人会在那个小网站上利用它们。但是您要实现什么?如果您想创建一个可以让您的朋友自己更改巡回日期的编辑器,请考虑一下这将花费您多长时间,直到他在没有您帮助的情况下可以轻松使用为止。您可以用该时间预算为他快速更改几次日期?

我认为,如今有太多人只为每个站点使用CMS系统,因为静态HTML是“旧的”。如果您不需要HTML5所无法提供的任何功能,请使用服务器端代码。但是,如果您不需要它,那么无需它可以节省很多时间。


每隔几周?哈哈,如果只有的话!更像是日子
莫妮卡(Monica)与Lightness赛跑

3

您只需要在需要时进行后端编程。

但是,即使像电子邮件表格这样的基本功能也通常需要基本的后端编程。如果只是显示站点,那么可以。


1
如果这只是一个简单的功能,那么您通常可以使用某些SaaS服务来替换它。例如,可以在Google Forms上免费完成注册表格,然后从网站进行链接。
安德烈·帕拉梅斯(AndréParamés)

2

不一定,但是如果使用纯HTML制作整个网站,则可能会遇到一些问题。

许多站点在多个页面上具有相同的菜单,页眉和页脚元素。如果仅将这些内容从一个页面复制并粘贴到另一页面,则随着站点的扩大,这可能变得乏味且容易出错,并且您需要在这些区域中进行更改。

在服务器端编程如此普遍的日子里,解决此问题的一种常用方法是使用框架将这些区域嵌入到每个页面中。几年前,这种方法失宠了,所以我不建议现在这样做。您可以编写一些简单的服务器端代码,而不是在每个页面上显示这些公共元素。

我同意这里的其他人的建议,他们建议使用现成的CMS。


1
“复制和粘贴”的一种替代方法是使用静态站点生成器。应该会为您照顾菜单/页眉/页脚元素,让您只需要担心内容。
Doktor J
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.