㈠ js与php之间使用base64 编解码异步上传文件时,IE浏览器如何自动设置安全级别
汗,楼主居然考虑使用ADODB.Stream保存文件?那如果上传的东东是木马呢?那怎么办?何况,ADODB.Stream只在微软的系统中才可以使用,换成其他系统,就没有这个组件。你这代码的“通用性”就会大打折扣。
此外,不可能在浏览器中通过代码,修改本地的安全级别!否则浏览器哪里还有安全性可言?比如,某非法站点,通过代码修改来访者的安全级别,然后将病毒发送到来访者客户端机子上,并直接运行,那岂不天下大乱?所以,直接从浏览器中运行代码修改安全级别,是不可能的(浏览器会提醒,所要运行的脚本有危害,除非真虽傻子,才会同意运行吧?)。
既然你使用的是PHP,那完全可以考虑用AJAX来实现异步上传文件。AJAX,兼容所有主流浏览器。
㈡ php 同步编程和异步编程的区别
传统的同步编程是一种请求响应模型,调用一个方法,等待其响应返回.
异步编程就是要重新考虑是否需要响应的问题,也就是缩小需要响应的地方。因为越快获得响应,就是越同步化,顺序化,事务化,性能差化。
异步编程通常是通过fire and forget方式实现,发射事件后即忘记,做别的事情了,无需立即等待刚才发射的响应结果了。(发射事件的地方称为生产者,而将在另外一个地方响应事件的处理者称为消费者).异步编程是一种事件驱动编程,需要完全改变思路,将“请求响应”的思路转变到“事件驱动”思路上,是一种软件编程思维的转变.
㈢ php有框架吗
最近一直以来php框架被广泛利用,多半都是基于mvc架构模式的,还有基于事件驱动模式的,大致列举几个。
Zend Framework
Zend Framework 在开发社区中有大量的追随者,它致力于Web 2.0风格的程序。因为它众多的追随者组成的活跃用户开发的扩展支持,Zend被称为“The PHP Company”。Zend是一个(也可能不是)今天可用的最受欢迎的PHP开发框架。它有健壮的特征能够支持协作开发,它需要一些PHP的额外知识。
E
E是一款非常简洁优秀开源的超轻量级PHP框架,致力于追求简洁,安全,自由,高效,是中小型项目首选框架。框架构架合理,一键生成完全合乎规范的大型网站文件夹架构,网站架构一目了然。强大的外部类库支持,分布式存储,强大的缓存系统,内置smarty模板引擎,单入口MVC模式,面向对象编程,具有微内核设计,移植性强,松散耦合等特点,能集成到你任何一个系统里面。无论您是一个NewPHPer 还是OLDPHPER,那么E框架是您的首选。学习完E框架后您可以快速并且轻松的驾驭其他框架,步入php高手之列。
CakePHP
CakePHP 无论对于初学者还是职业PHP开发者都是很好的选择。它基于与Ruby on Rails同样的原则而设计,它十分注重快速开发——这使得它成为一个非常好的用于RAD的开发框架。它快速增长的支持系统,简洁性和可测量性使得CakePHP成为今天可用的最受欢迎的PHP开发框架之一。
SpeedPHP
SpeedPHP是一款全功能的国产PHP应用框架系统。她以“快速开发、快速学习、快速运行”为理念,在提高团队开发效率、容易学习及使用、轻量级架构以增加执行速度等方面有着突出的表现。SpeedPHP框架是从实际运行的商业系统中取其精华而成的,在稳定性和运行速度上都非常出色;同时有着清晰的架构,更有利于提高团队开发效率,教程众多,入门容易,号称最适合初学者的PHP框架,快速带你进入PHP高手的行列。
Yii
Yii 是一个基于组件、用于开发大型 Web 应用的 高性能 PHP 框架。它将 Web 编程中的可重用性发挥到极致,能够显着加速开发进程。Yii(读作“易”),代表简单(easy)、高效(efficient)、可扩展(extensible)。
Symfony
Symfony 是为那些更加职业的主要开发企业级程序的开发者而准备的——特别是 Askeet 和 Yahoo! Bookmarks。这款开源PHP开发框架有着丰富的特性,做起这些来绰绰有余,它主要的缺点是比其他的框架略微慢一些。
Canphp
Canphp是一个中国开源的php框架,主要的设计理念就是为了追求简单,减少php初学者的学习成本,而且追求高效率,模版类不提供其他标签,直接应用php的源代码,还有它是微内核设计,移植性强,松散耦合等特点,能集成到你任何一个系统里面。其中集成的http类相当的强大,采集图片速度相当的快,为什么这样呢?因为适用了模拟异步多进程的原理。
KangPHP
KangPHP是一款非常简洁优秀的PHP框架,是中小型项目首选框架。框架构架合理,一目了然。强大的外部类库支持,分布式存储,强大的缓存系统,内置smarty模板引擎,单入口MVC模式,面向对象编程,如果您是一个NewPHPer 那么KangPHP框架是您的首选。学习完KangPHP框架后您可以快速并且轻松的驾驭其他框架。
DuoLamPHP
DuoLamPHP是一款超轻量级的PHP框架,命名是按照多啦A梦动漫给改成的拼音形式。DP是一个简单、高效、上手容易的PHP框架,遵循apache开源协议。可以快速搭建出一个项目,作为一个超轻量级的PHP框架,完美支持MVC,完全面向对象。作为一个PHPer,你还需要什么呢? 我们的口号是:给力的超轻量级PHP框架。 原因:用了的人都知道!
Codelgniter
Codelgniter 以它的简单易用,性能和速度而闻名。与 Symphony 不同,这款PHP开发框架对于共享主机的用户而言很理想,如果你想有一个小型覆盖面的框架。它提供了简单的解决方案,还有扩展的知识库,通过视频教程,用户指南和wiki来提供支持。
Seagull
Seagull 是一个良好的PHP开发框架,可以用来开发Web,命令行和GUI程序。这是一款无论对初学者还是职业程序员而言都及其简单的开发框架。对于初学者,Seagull提供一套包含样例程序的库,经过简单修改就能符合你的要求,而对于专家级程序员,Seagull提供了一整套设置选项——包括最佳练习,标准的和模块化的代码库——来快速简单地构建Web程序。Seagull有一个活跃的用户社区以及丰富的支持文档。
InitPHP
InitPHP是一款轻量级的php开发框架,采用分层体系架构,适合大中型网站架构。提供丰富的library类库,以及简单的框架扩展机制。InitPHP还提供详细的开发文档,可以让您在使用该框架的时候更加简单实用。InitPHP实现了抽象DB层、分层体系架构、缓存无缝切换机制、简单模板机制、多模型部署机制、强大的安全体系,是您快速开发php应用的利器!
Thinkphp
ThinkPHP是一个性能卓越并且功能丰富的轻量级PHP开发框架,本身具有很多的原创特性,并且倡导大道至简,开发由我的开发理念,用最少的代码完成更多的功能,宗旨就是让WEB应用开发更简单、更快速。从1.*版本开始就放弃了对PHP4的兼容,因此整个框架的架构和实现能够得以更加灵活和简单。2.0版本更是在之前的基础上,经过全新的重构和无数次的完善以及改进,达到了一个新的阶段,足以达到企业级和门户级的开发标准。国人开发的PHP框架,目前最新版本为3.0RC2版本。
PhpPeanut
PhpPeanuts 是一个用以开发数据库后端应用的PHP框架,包含一个可扩展的动态脚手架用来创建一个完整的web应用,提供用户界面和ORM,包括CRUD操作、关联关系以及一些示例查询。 phpPeanuts 2.0 完全支持 PHP 5,遵循 ESTRICT 标准,不再使用变量引用来传递对象;提升了灵活性;更独立的模块,以及迭代的对象复制等等。
Rong Framework
Rong Framework是一个国产的基于php5的面向对象开发框架,开发的主要目的是简化开发、高性能开发。支持数据库文件缓存、数据库通用操作及封装。简化CRUD代码编写。支持在线生成CRUD代码,只要选中数据表名称,就可以生成CRUD代码。不懂编程的人也可以做到。rong framework分为php代码模板(class Rong_View_PHP)和Rong_View_Wudimei(无敌美模板引擎,类似smarty)两种模板机制。拥有良好的MVC机制和url美化方式、可以在代码中实现URL重写(由Rong_Countroller_Route实现)。
㈣ 如何使用fsockopen函数实现异步执行PHP
Web服务器执行一个PHP脚本,有时耗时很长才能返回执行结果,后面的脚本需要等待很长一段时间才能继续执行。如果想实现只简单触发耗时脚本的执行而不等待执行结果就直接执行下一步操作,可以通过fscokopen函数来实现。
PHP支持socket编程,fscokopen函数返回一个到远程主机连接的句柄,可以像使用fopen返回的句柄一样,对它进行fwrite、fgets、fread等操作。使用fsockopen连接到本地服务器,触发脚本执行,然后立即返回,不等待脚本执行完成,即可实现异步执行PHP的效果。
示例代码如下:
functiontriggerRequest($url,$post_data=array(),$cookie=array()){
$method="GET";//通过POST或者GET传递一些参数给要触发的脚本
$url_array=parse_url($url);//获取URL信息
$port=isset($url_array['port'])?$url_array['port']:80;
$fp=fsockopen($url_array['host'],$port,$errno,$errstr,30);
if(!$fp){
returnFALSE;
}
$getPath=$url_array['path']."?".$url_array['query'];
if(!empty($post_data)){
$method="POST";
}
$header=$method."".$getPath;
$header.="HTTP/1.1\r\n";
$header.="Host:".$url_array['host']."\r\n";//HTTP1.1Host域不能省略
/*以下头信息域可以省略
$header.="User-Agent:Mozilla/5.0(Windows;U;
WindowsNT5.1;en-US;rv:1.8.1.13)Gecko/20080311Firefox/2.0.0.13\r\n";
$header.="Accept:text/xml,application/xml,application/
xhtml+xml,text/html;q=0.9,text/plain;q=0.8,image/png,q=0.5\r\n";
$header.="Accept-Language:en-us,en;q=0.5";
$header.="Accept-Encoding:gzip,deflate\r\n";
*/
$header.="Connection:Close\r\n";
if(!empty($cookie)){
$_cookie=strval(NULL);
foreach($cookieas$k=>$v){
$_cookie.=$k."=".$v.";";
}
$cookie_str="Cookie:".base64_encode($_cookie)."\r\n";//传递Cookie
$header.=$cookie_str;
}
if(!empty($post_data)){
$_post=strval(NULL);
foreach($post_dataas$k=>$v){
$_post.=$k."=".$v."&";
}
$post_str="Content-Type:application/x-www-form-urlencoded\r\n";
$post_str.="Content-Length:".strlen($_post)."\r\n";//POST数据的长度
$post_str.=$_post."\r\n\r\n";//传递POST数据
$header.=$post_str;
}
fwrite($fp,$header);
//echofread($fp,1024);//服务器返回
fclose($fp);
returntrue;
}
这样就可以通过fsockopen()函数来触发一个PHP脚本的执行,然后函数就会返回。接着执行下一步操作了。
现在存在一个问题:当客户端断开连接后,也就是triggerRequest发送请求后,立即关闭了连接,那么可能会引起服务器端正在执行的脚本退出。
在PHP内部,系统维护着连接状态,其状态有三种可能的情况:
*0–NORMAL(正常)
*1–ABORTED(异常退出)
*2–TIMEOUT(超时)
当PHP脚本正常地运行NORMAL状态时,连接为有效。当客户端中断连接时,ABORTED状态的标记将会被打开。远程客户端连接的中断通常是由用户点击STOP按钮导致的。当连接时间超过PHP的时限(参阅set_time_limit()函数)时,TIMEOUT状态的标记将被打开。
可以决定脚本是否需要在客户端中断连接时退出。有时候让脚本完整地运行会带来很多方便,即使没有远程浏览器接受脚本的输出。默认的情况是当远程客户端连接中断时脚本将会退出。该处理过程可由php.ini的ignore_user_abort或由Apache.conf设置中对应的"php_valueignore_user_abort"以及ignore_user_abort()函数来控制。如果没有告诉PHP忽略用户的中断,脚本将会被中断,除非通过register_shutdown_function()设置了关闭触发函数。通过该关闭触发函数,当远程用户点击STOP按钮后,脚本再次尝试输出数据时,PHP将会检测到连接已被中断,并调用关闭触发函数。
脚本也有可能被内置的脚本计时器中断。默认的超时限制为30秒。这个值可以通过设置php.ini的max_execution_time或Apache.conf设置中对应的"php_valuemax_execution_time"参数或者set_time_limit()函数来更改。当计数器超时的时候,脚本将会类似于以上连接中断的情况退出,先前被注册过的关闭触发函数也将在这时被执行。在该关闭触发函数中,可以通过调用connection_status()函数来检查超时是否导致关闭触发函数被调用。如果超时导致了关闭触发函数的调用,该函数将返回2。
需要注意的一点是ABORTED和TIMEOUT状态可以同时有效。这在告诉PHP忽略用户的退出操作时是可能的。PHP将仍然注意用户已经中断了连接但脚本仍然在运行的情况。如果到了运行的时间限制,脚本将被退出,设置过的关闭触发函数也将被执行。在这时会发现函数connection_status()返回3。
所以还在要触发的脚本中指明:
ignore_user_abort(TRUE);//如果客户端断开连接,不会引起脚本abort
set_time_limit(0);//取消脚本执行延时上限
或使用:
register_shutdown_function(callbackfuction[,parameters]);//注册脚本退出时执行的函数
㈤ 网站专业是前端好学还是后端
前端工程师的职业发展和就业前景
前端是一个相对比较新的行业,互联网发展早期(1995年~2005年)是没有专业的前端工程师的。随着互联网的发展,大约从2005年开始,正式的前端工程师角色被行业认可,到了2010年,互联网开始全面进入移动时代,前端工程师的地位越来越重要,前端领域的技术发展也越来越快,各种新的思想、设计模式、工具和平台都快速发展,对前端工程师的技能要求也越来越高。前端领域发展很快,各种新技术新思想不断涌现,这是一个好现象。但是前端发展太快也带来一些问题,其实还是那句话,前端工程师首先是软件工程师,基础是最重要的,如果基础不扎实,一切应用技能就都是“浮云”
后端工程师的职业发展和就业前景
后端工程师主要负责数据逻辑存储和复杂逻辑的设计。学习能力对于后端开发来说来说的确是一个比较重要的能力,即使做了5年以上的开发,每年都还是要学习新的技术,因为好多技术都是要更新换代的,不学习就是在退步。后端开发总体来说,只要有了过硬的技术,走到哪都是企业争抢的人才。
身处万物互联网时代,无论从事Web前端还是后端开发,都需要具备与时俱进的开拓者精神,与时代共奋进,实现人生价值。
㈥ PHP调用存储过程的结果集如何异步展示在前端表格中
本文阐述了怎么使用DBMS存储过程。我阐述了使用存储过程的基本的和高级特性,比如返回ResultSet。本文假设你对DBMS和JDBC已经非常熟悉,也假设你能够毫无障碍地阅读其它语言写成的代码(即不是java的语言),但是,并不要求你有任何存储过程的编程经历。
存储过程是指保存在数据库并在数据库端执行的程序。你可以使用特殊的语法在Java类中调用存储过程。在调用时,存储过程的名称及指定的参数通过JDBC连接发送给DBMS,执行存储过程并通过连接(如果有)返回结果。
使用存储过程拥有和使用基于EJB或CORBA这样的应用服务器一样的好处。区别是存储过程可以从很多流行的DBMS中免费使用,而应用服务器大都非常昂贵。这并不只是许可证费用的问题。使用应用服务器所需要花费的管理、编写代码的费用,以及客户程序所增加的复杂性,都可以通过DBMS中的存储过程所整个地替代。
你可以使用Java,python,Perl或C编写存储过程,但是通常使用你的DBMS所指定的特定语言。Oracle使用PL/SQL,PostgreSQL使用pl/pgsql,DB2使用Proceral SQL。这些语言都非常相似。在它们之间移植存储过程并不比在Sun的EJB规范不同实现版本之间移植Session Bean困难。并且,存储过程是为嵌入SQL所设计,这使得它们比Java或C等语言更加友好地方式表达数据库的机制。
因为存储过程运行在DBMS自身,这可以帮助减少应用程序中的等待时间。不是在Java代码中执行4个或5个SQL语句,而只需要在服务器端执行1个存储过程。网络上的数据往返次数的减少可以戏剧性地优化性能。
使用存储过程
简单的老的JDBC通过CallableStatement类支持存储过程的调用。该类实际上是PreparedStatement的一个子类。假设我们有一个poets数据库。数据库中有一个设置诗人逝世年龄的存储过程。下面是对老酒鬼Dylan Thomas(old soak Dylan Thomas,不指定是否有关典故、文化,请批评指正。译注)进行调用的详细代码:
try{
int age = 39;
String poetName = "dylan thomas";
CallableStatement proc = connection.prepareCall("{ call set_death_age(?, ?) }");
proc.setString(1, poetName);
proc.setInt(2, age);
cs.execute();
}catch (SQLException e){ // ....}
传给prepareCall方法的字串是存储过程调用的书写规范。它指定了存储过程的名称,?代表了你需要指定的参数。
和JDBC集成是存储过程的一个很大的便利:为了从应用中调用存储过程,不需要存根(stub)类或者配置文件,除了你的DBMS的JDBC驱动程序外什么也不需要。
当这段代码执行时,数据库的存储过程就被调用。我们没有去获取结果,因为该存储过程并不返回结果。执行成功或失败将通过例外得知。失败可能意味着调用存储过程时的失败(比如提供的一个参数的类型不正确),或者一个应用程序的失败(比如抛出一个例外指示在poets数据库中并不存在“Dylan Thomas”)
结合SQL操作与存储过程
映射Java对象到SQL表中的行相当简单,但是通常需要执行几个SQL语句;可能是一个SELECT查找ID,然后一个INSERT插入指定ID的数据。在高度规格化(符合更高的范式,译注)的数据库模式中,可能需要多个表的更新,因此需要更多的语句。Java代码会很快地膨胀,每一个语句的网络开销也迅速增加。
将这些SQL语句转移到一个存储过程中将大大简化代码,仅涉及一次网络调用。所有关联的SQL操作都可以在数据库内部发生。并且,存储过程语言,例如PL/SQL,允许使用SQL语法,这比Java代码更加自然。下面是我们早期的存储过程,使用Oracle的PL/SQL语言编写:
create procere set_death_age(poet VARCHAR2, poet_age NUMBER)
poet_id NUMBER;
begin SELECT id INTO poet_id FROM poets WHERE name = poet;
INSERT INTO deaths (mort_id, age) VALUES (poet_id, poet_age);
end set_death_age;
很独特?不。我打赌你一定期待看到一个poets表上的UPDATE。这也暗示了使用存储过程实现是多么容易的一件事情。set_death_age几乎可以肯定是一个很烂的实现。我们应该在poets表中添加一列来存储逝世年龄。Java代码中并不关心数据库模式是怎么实现的,因为它仅调用存储过程。我们以后可以改变数据库模式以提高性能,但是我们不必修改我们代码。
下面是调用上面存储过程的Java代码:
public static void setDeathAge(Poet dyingBard, int age) throws SQLException{
Connection con = null;
CallableStatement proc = null;
try {
con = connectionPool.getConnection();
proc = con.prepareCall("{ call set_death_age(?, ?) }");
proc.setString(1, dyingBard.getName());
proc.setInt(2, age);
proc.execute();
}
finally {
try { proc.close(); }
catch (SQLException e) {}
con.close();
}
㈦ 后台开发就业前景怎么样
我想告诉你的是后端工作发展前景一直都很不错,薪资高
一般互联网公司的CTO、技术经理、架构师都是后端开发出身
PHP也是属于后端开发的一种,是web开发领域的佼佼者
PHP目前也是在顺应时代的变迁,除了应用程序框架和CMS之外,过去几年PHP中的异步框架也开始兴起,比如Swoole、Swoft和ReactPHP等等,都是用PHP或其他语言编写的框架和服务器
可以让PHP程序员不需要学习另外一门语言、也可以用PHP实现高并发、高可用、微服务架构,即时通信等,关键还省钱解约成本,能够让用户运行真正的协程异步。Swoole协程编程、并发编程、Swoft微服务、等技术都是成为一个中高级PHPer,架构师的必经之路,为了帮助大家进阶中高级涨薪、
㈧ PHP的哪个MVC框架最值得推荐
1、Laravel,laravel这个框架很有意思,定时任务,数据迁移,大概你能在web中想到的功能这个框架都可以提供,它的路由借鉴了Ruby on Rails 和Python的flask框架,但是还提供了web方面其它的一些功能,你可以把它想象成PHP中像Java一样强大的Web中的瑞士军刀,前提是你不考虑性能,因为它的实现使用了大量的闭包和反射,大概在PHP里严格引入设计模式的也只有这个了。
生产效率:5星
学习难度:5星(5星为最难,学习成本最高,下同)
性能:2星
社区活跃:4星(社区活跃可以很方便的找到别人已经开发的功能,专指中文文档,组件丰富性)
2、ThinkPHP5,大概3年前研究过TP3源码,使用起来简单,因为自动加载的问题,性能是个坑,现在发展到5,个人认为已经是一个相当优秀的框架了,路由定义简单,配置简单,文档丰富,社区也相当活跃
生产效率:5星
学习难度:1星
性能:4星
社区活跃:4星
3、Yii2,Yii2的路由分发跟TP5稍微有点不一样,也使用了反射的功能,自动加载现在都使用的composer,大体上都差不多,都有延时加载,Yii2的路由相对智能一些,不用去手动维护,类似于TP3所以使用起来也是很方便,性能比TP5应该略差点,没测试过,从源码来看
生产效率:5星
学习难度:2星
性能:3.5星
社区活跃:4星(很多强大的组件,你只要下载就行了,会省很多事)
4、CakePHP,这个框架内部的封装性看上去没上面那几个优美,但是它自己实现了use关键字功能,所以兼容性来看应该是比上面那几个好点的,但这在新项目上应该不是问题,新项目上PHP7,啥都别想,准没错。它的路由定义类似于TP5但是稍微多点功能,不过其实是个鸡肋。中文文档就不说了,很不好找。不过也算是个相对简单的框架严格遵循MVC
生产效率:3星
学习难度:3星
性能:4星
社区活跃:2星
5、Workman,这个框架相当强大,如果你要实现一些复杂的协议或者用php做一些websocket推送或者TCP/UDP服务器的话,这个框架可能可以满足你的需求,也有一些异步的组件,比较高级的框架,初中级程序员可能用不上
生产效率:3星
学习难度:4星
性能:3星
社区活跃:2星
6、swool,这是个相当有意思的框架,性能很强大,旁友,你听说过异步编程的nodejs,python的tornado框架吗,这个在php里做的就是一个这样的事情,国内的一位老兄开发的C扩展,用php来异步编程,看了下文档,稍微做了个性能测试,相当优秀,就是不知道在项目中重度使用会不会踩到什么坑,而且这也是一个相当高级的框架。大部分人可能直接转node了吧,毕竟node生态环境已经相当好了,总之,如果你想用php试试异步编程来提高性能,非这个框架莫属。性能独一档,编程难度也相对高一些,你需要有些进程的理论基础
生产效率:3星
学习难度:4星
性能:6星
社区活跃:2星
7、Yaf,鸟哥写的c扩展框架,然而你要自己实现很多轮子,生态环境是个大问题。
生产效率:4星
学习难度:4星
性能:5.5星
社区活跃:2星
其它框架还没怎么了解,国内的话,根据具体业务,选上面几个,没错。
㈨ 前端开发需要掌握什么技术
前端需要掌握的技术还是很多的1.熟练掌握前端开发技术(HTML5、CSS3、JS、JSON、XHTML),了解各项技术的相关标准;
2.掌握Ajax异步编程,能够写出高性能、可复用的前端组件;
3.对OO、MVC、MVVM等编程思想、前端框架有深刻理解,熟练掌握至少一个前端框架了解其原理(常用前端框架 Vuejs,AngularJS,React,Bootstrap,QUICK UI,移动端有:Frozen UI,weUI ,SUI,MUI,AUI);
4.善于Web性能优化,可访问性、对SEO等有良好的体验;理解表现层与数据层分离的概念、 Web语义化;
5.了解前端安全机制,熟悉HTTP协议以及浏览器缓存策略;
6.熟悉常见JS开发框架源码实现(如:prototype、jQuery、Mootools,Ext, Dojo,underscore、YUI、Kissy);
7.拥有良好的代码编写,设计文档撰写的经验,熟练使用Git等版本控制工具;
8.对常见的浏览器兼容问题有清晰的理解,并有可靠的解决方案;如IE6/7/8/9、 Firefox、Safari、Chrome
㈩ 如何系统地学习 Express JS
如何系统地学习 Express JS ?
虽然我找到了文档翻译,可还没学 Node
另外也没搜到相关的博文
5 个回答
24赞同反对,不会显示你的姓名
夏天 A competent programmer
24 人赞同
先从基础说起吧,Node.js使用javascript语言,所以JS的语法、特性及OO肯定要先掌握了,再学习node的api,特别需要领会事件驱动及异步编程的思想,这算是一个很大的转变,Node主要用于网络应用,所以网络编程内容多看下。
express是一个基于node的web框架(集成web服务器+mvc),当然其实不用框架,使用node自己弄一个web服务器和mvc框架也不是很麻烦(Node为网络而生,当然强大的不止这点),但是有优秀的express,封装了很多常用功能,推荐用。
学习express肯定是先把api过一遍,文档中的简单例子都试试,但这肯定是不够的,要深入了解还是得看源码,express主要依赖connect(基于node的http服务器框架,提供大量的中间件帮助用户构建强大灵活的web server),所以深入connect也是有必要的。
徐雷
6 人赞同
不能一上来就学express,因为他是基于node的框架,不懂node的原理就无法学会express。而node的理论基础又是javascript的event-loop异步机制,所以那里应该是你学习node.js的起点。 别把学node.js当做学java或php那样看待,原因就在于他的异步编程思想。
node的中文资料很少,推荐从这篇英文文章看起
王宇鹏 写代码的产品, 前端慎入
1 人赞同
说实话这东西很难学的, 一是中文资料太少, 而是里面融合了太多了概念. 建议先学js, 然后学习js的mvc, 模板, 然后在学一个后端语言,例如php 和codeigniter框架 然后在学nodejs 基本各种概念弄明白了 学起来就快了
匿名用户
好多年前的问题啊.
Express in action 强烈推荐.
知乎用户 电力行业、信息工程师
异步是个难点,与过去的传统设计有所不同。如果可以深刻领会掌握异步的概念,node.js才算是掌握了