php怎么变成静态页,php和前端哪个前景更好?
来,我先讲个故事
冲动离个职你是一个php大牛,最近遇到了中年的困惑,不知道哪根筋不对头,裸辞了。在家呆了一些日子,快断粮了,你老婆一直骂你没隔壁老王有出息,气的你带上简历开始找工作,心想,虽然我错过了移动互联网,错过了风口,但我好歹也有N年的PHP经验,代码写的比飘柔还飘逸,不说找工作,工资好歹也来个三四万吧。
开始找工作于是你打开招聘网站,查看了下,这是怎么回事,除了北上深有超过10K的外,其它的怎么都是6K起步?然后你又搜索了下web前端,北上广15K起步,连二三线城市都有超过10K的。
你不信邪,找了之前的同事朋友闺蜜炮友之类的,想曲线入职,询问后,发现已经不招PHP了,你问为啥?PHP不是很好吗?对方像倒苦水一样,和你娓娓道来。
曲线求职公司老板祖坟上冒了青烟,研发了一个爆火的产品,投资人一看,不错哦,于是钱就和开了闸的洪水一样,不断的流了进来,老板早就想换二奶,哦不,升级产品包装,进行大面积推广了,这一推广,用户量激增,问题也随之而来,旧的服务器宕机了好几次,你朋友不断的增加服务器,花了好多钱,看的老板的心,哇凉哇凉的。
大牛来了有天,老板和朋友们去洗浴,哦,不是,去聚会的时候,说出了心里的苦,朋友给他推荐了位技术牛人,号称亿级架构能力。老板于是花了几百万,把这位大牛请了过来。
老板拉着大牛,触膝长谈,就差抱在一起睡觉了。大牛和老板说了很多,什么叫高并发原则,什么是拆分、服务化、消息队列,什么叫高可用原则,什么是降级、限流,什么是负载均衡与反向代理,什么是隔离术,什么是缓存,什么是多级缓存,什么是队列术。
一夜过后,老板感觉把一辈子的技术都学了,于是回去和你同事说了这些,你同事全程一个囧字脸,老板无奈的摇摇头,把大牛拉了过来,和大家说,以后,大牛就是你们的老大,他指东,你们就往东,他拉屎,你们要提前递手纸。
大牛感动的泪流满面,马上撸起袖子,准备开干。一看,哇靠,PHP,顿时,又旧流满面。
未来方向于是,大牛招了一批的Java,重新搭建了亿级流量架构,搭建了微服务平台,现在缺的就是Web前端,做前后端分离开发,所以你同事现在要么转Java,要么转Web前端。
现在业务不断扩展,老板全力向小程序方向开工,Web前端开发人员,做小程序的效率,那叫一个快。公司慢慢的把所有的PHP系统,替换成了Java系统,配合Web前端,一个崭新的未来,就在眼前。同时,大牛还向老板建议,使用Node.js做一个BFF层,分担性能压力,正好Web前端也可以写Node.js
……
慢慢的,你知道了现在技术的发展方向,看了看手中的PHP简介,陷入了苦恼。
好了,故事说完了,上面只是说了现在的方向,并不是说PHP没落了,不过企业级高并发,已经很少使用PHP了。
零基础做一个类似豆瓣的网站?
之前本科的时候恰好学过一段时间的网站开发,虽然现在不做了,但当时学习的那种新鲜感还恍如隔日。下面是我的回答:
想做豆瓣这样一个网站首先要有一个好的想法或者说是切入点。手机上的哪些不经常用的App,卸载了又一波,唯独豆瓣一直在我的手机上。它简洁地UI设计,以及主体的内容都是我比较喜欢的。所以想做一个优秀的网站先要想清楚网站上要呈现什么内容。
接下来谈谈技术的部分。
一、UI设计
UI设计即用户界面设计,比图说豆瓣的主页,具体显示什么东西、各个部分显示在什么地方、以及每一个部分的显示形式、字体的颜色大小等等都是UI设计的范畴。开发网页之前首先最好先把界面确定下来。当然这个可以不用开发人员去学,可以找别人合作,老实讲这个活不是专业的还真做不来。没天赋的还是老老实实做技术好了。
二、静态网页编写
静态网页要实现的功能是将信息显示网页中,说白了就是怎样在浏览中显示网页。其实我们每一个网页都是一个文件,然后通过浏览器打开后即显示在了电脑闹屏幕上。而这个文件就是由HTML(超文本标记语言)来编写的,这个语言超级简单。主要的功能就是将网页中的文字或者图片显示在屏幕上的固定位置。所以说开发网页首先要学会HTML。
三、动态网页编写
上面只是将网页显示了屏幕上,但我们的网友这些功能还远远不够,比如说上图中学要我们登录注册,当我们输入账号密码后我们需要点击“登录”按钮,但是点击之后我们输入的信息到哪了?这就需要另外一种语言来处理这些信息,需要网页“动“起来。其实当我们点击登陆后,这些数据是跟数据库作比对的,假如网站的数据库中有着个人则登陆成功没有则登录失败。这种功能就需要一种脚本语言来实现,比如像PHP,JAVA,PYTHON、C#中的一种都可以实现。目前的话JAVA还是最热门的,推荐学这个。
四、数据库的交互
一个网站需要有很多的信息来存储,比如上面提到的用户名密码信息,还有很多其他的,豆瓣中每个电视剧、每个电影的信息都是用数据库来存储的。一个网页之所以能够丰富多彩都归功于数据库的内容够出彩。调用数据库也有自己专门的SQL语言,内容不多,了解一下就行。常用到的数据库有MySql、微软的SQLServer、QRACLE等,自己用的话MySql就行、因为免费的,企业的话一般都选择Oracle,收费但安全。说到这,他们各自的优缺点应该明了了吧。
以上就是开发一个网页要学的最基础的东西,还有其他细节的东西则需要学习后再了解。现在,有很多开发网站的框架,就是把每个网站最基础的东西都写好了,调用就行,这个建议入门以后再去学。
以上就是我的回答,也是我学习的过程。整体来说网站开发是不难的,只要用心很快就可以上手的,建议在学习是多思考原理,以免像我一样少走弯路。
希望我的回答对你有帮助
有啥有误的地方欢迎指正交流
想要给自己课题组做个网页?
最近因为要做一个小型的网站,需求很简单有点像公司内部的管理网站,和室友一起倒腾,发现了一些坑。我自己之前没有接触过python 但是发现真的非常好上手。
我们没人会前端,所以最怕修改网页,一开始选择了Flask框架,我搞了半天遇到各种坑(还要修改css 麻烦),中间件也不好用,劝大家用django,资料多,非常好用。
那么开始说重点,需要做的哪些东西。
http://python.usyiyi.cn/ 是主要的资料,里面是中文的资料建议一点点看下去。
1-项目环境搭建。
1.1第三方库准备
开发环境是mac os 和ubantu 推荐大家下载一个第三方的软件叫 "Anaconda" ,安装非常简单,直接运行脚本就好。
安装完了,可以到命令行运行 pip list。可以看到已经安装的python第三方库 。
此时我们是没有django的库的。
1.2IDE的安装
IDE 使用eclipse,讲一个工具Pydev,安装自行百度,点点就行。
然后 到Eclipse了 New->Project->Pydev->Pydev Django Project,一路next 。发现eclipse 找不到Django 环境,回来点击 click here to configure an interpreter 然后把python interpreter 中的名为python的删掉,那是系统默认的,改成anaconda目录 下 bin/里面的python。默认是2.7.11吧。忘记安装目录?一个命令 sudo find / -name anacon* 搞定~。找到以后加进去,到了图一这一步就结束。
(图1)
2-数据库配置和使用
2.1数据库连接文件配置
我选了mysql,当然在这之前mysql的帐号密码应该自己确定了吧。mysql配置应该简单。但是如果要支持远程访问,比如你把数据库放到云上,别人机器上,毕竟开发不是一个人的事,我自己遇到的坑是"关于 mysql 配置文件中的 bind-address",自行百度,解决方案是删除就好。(推荐几个mysql 连接的桌面软件,用Navicat ,或者mysql workbench 都是不错的)。(后来发现这里输入密码和帐号没什么用还是要去修改在与项目同名的app里面的setting)。现在在mysql自己创建一个database 取名随便。我叫test,其他字段应该不用解释了如图2。
(图2)
2.2创建APP(模块)
然后我们在工程里根目录右击->Django->Create App->输入名字就好。因为网页主要是MVC模式,创两个吧。一个叫db 专用于管理数据库(models 层) 第二个专用于后台逻辑。名字随便取因为可能要对应多个模块。django里面增加一个app 就需要在与项目同名的那个app的setting中Installed_app里面加入app名(如图4)。我们加入以后目录结构(如图3.)
(图3)
(图4)
2.3用django模型层建表
数据库正式开发,数据库创建,在db的models.py中 对应数据库中每个表写class,就是定义好字段,因为Django的目标是要程序员完全脱离数据库的操作。那么我们先不建表,cd 到你的工程目录去,用命令行 用打入 manage.py migrate 命令。效果如图5。
(图5)
如果你的配置是没错的,此时django 已经在你的数据库中建了很多表,都是django自带的,我也没有用起来,唯一用的是django自带的数据库管理界面,类似于Navicat,还支持搜索功能,自己去文档里 http://python.usyiyi.cn/django_182/intro/tutorial02.html 学吧。
然后在db的models里写一个表的代码。然后效果如图6 还是用了Manage 脚本。
from __future__ import unicode_literalsfrom django.db import models# Create your db here.class Message(models.Model): user_id = models.BigIntegerField(blank=True, null=True)(图6)
到这里表都结束了,实际开发中,我数据库都是先建好的,那我全部都要写每个类是不是很麻烦,有没有偷懒的办法呢?
答案是用./manage.py inspectdb
用了就知道,他会反向生成表的代码, 然后直接复制进models里面就好了。
3-url 解析
3.1url匹配处理函数
在Django中 一般url解析分为两层。
第一层负责解析APP的名,像我在test 里urls.py里写的(如图7)。第一个参数表示响应的url,第二个参数表示处理的模块。
(图7)
第二层是解析到具体的模块中的某个函数来响应对应的url。
比如在view app 中的urls.py(需要自己创建) 写的(图8)url(函数中第一个参数为匹配路径,后一个是对应函数名)里面的home对应view app中的views.py 里的函数home
(图9)
3.2静态网页配置
其实到这个时候已经可以实现响应了。(到这里还要解决一个问题 'Index/home.html')在哪里呢?我们此时创一个文件夹叫templates html都应该放在这里,Index 是一个模块的名字。你可以在templates下面建很多个文件夹,对应很多的APP模块。(html就不属于本文范畴了)此时目录结构为
(图10)
搞定了后别忘记在test的setting 里加上一句代码
(图11)
"就是DIRS"里面.想想也是,不然 Django怎么知道我们的html放在这里呢。
4-逻辑层(也就是最后一步了,怎么样把数据库的东西查出来,放到html中。)
4.1数据库中的数据
往表里插两条数据
(图12)
4.2动态显示数据
看下代码:html部分
(图13)
里面的{%%}是django 自带标签的自己看文档学一下就会。
(图14)
里面的Message.objects.all() 表示从Message表中取出所有数据。还有什么复杂查询自己看文档,一般都是filter exclude,django 还支持sql语句直接写,函数名叫raw().
context就是返回给页面的一个对象里面放了很多值。在python里叫字典(dict)
4.3启动服务器
最后我们用命令行来到我们的目录,敲./manage.py runserver (要支持所有端口 和外网访问加0.0.0.0)。然后出现
(图15)
4.4查看网页
再到浏览器敲127.0.0.1:8000 django默认端口 (图16)
4.5实际开发中问题
结果出来了。遇到具体问题就是查一些文档和stackoverflow。发现一个时区问题,建议和我改成一样。把test里面setting中的时区部分改成这样。否则你会有八个小时的时差,
(图17)
。还有啥问题可以和我讨论的可以留言。小弟也是刚做完这个项目从零开始。码字不易~小问题就不在这里说了。
界面日志界面
管理界面
评论界面
使用的技术
python、JavaScript、CSS、htmlMySQL 数据库jinja2 模板引擎Vue.js 界面框架Nginx Web服务器gunicorn WSGI服务器Supervisor 监控服务进程工具Fabric 自动部署工具学习过程
刚开始跟着作者的教程编写这样一个博客网站的时候感觉很困难,因为自己对web上的很多概念不了解,对web服务器是怎么运行也不清楚,所以不知道作者为什么要这么写代码。后来去学习了Django,知道了什么是ORM,什么是模板等一些概念后,并且能够使用Django搭建一个网站,再跟着作者学习就轻松了一些,希望我的学习过程对你有启发。当然,如果你只想快速的搭建一个网站,可以使用Django、Flask等免费开源的网站框架,而不用自己一步一步的去实现它。
php静态类和非静态类的区别?
静态类和非静态类的主要区别:主要区别在于静态类不能实例化,静态类编译器能够执行检查确保不是偶然的添加实例成员,C#编译器会自动把它标记为sealed,静态类中不能创建非静态的方法,即静态方法中只能创建静态方法,但在非静态类中可以调用静态方法。
如果在首页不显示文章内容?
可能原因:
1没有更新栏目列表页,首页调用的是.php文件,会调用数据库内容,添加新文章后首页自然有显示,而你的栏目页使用静态页,如果不在添加文章后更新相关栏目页,自然就无法显示新增加的文章2列表页模板标签错误根据你的问题,最有可能是第一种情况