鱼C论坛

 找回密码
 立即注册
查看: 3844|回复: 2

[技术交流] 用node.js建自己个个人聊天网站(二)

[复制链接]
发表于 2017-6-2 06:20:57 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
上个帖子我们没写一行代码就建了个网站,这就是现在编程界追求的简洁趋势。已经不要求你写大段的代码,复杂的逻辑,要用最简单的代码表达更多的事情,这样你写着也省事。别人维护起来也方便。

其实我们建的网站是由webstorm软件自动生成的代码,nodejs跟其他建站的语言(php,jsp,asp...)不同的是不需要额外的服务软件,比如阿帕奇,tomcat,IIS等,他是通过代码直接建站,方便又灵活。今天我们讲一下昨天的代码

aaa.png
网站的启动文件主要是www这个文件,你也可以电脑cmd或命令行里输入node www来启动服务器,nodejs不用浏览器也可以直接使用非常方便。

一般建网站都需要多页面,现在我说说怎么在服务器注册一个多页面的网站
app.js文件:
  1. var express = require('express');
  2. var path = require('path');
  3. var favicon = require('serve-favicon');
  4. var logger = require('morgan');
  5. var cookieParser = require('cookie-parser');
  6. var bodyParser = require('body-parser');

  7. var index = require('./routes/index');
  8. var users = require('./routes/users');
  9. var game = require('./routes/game');//extend
  10. var app = express();

  11. // view engine setup
  12. app.set('views', path.join(__dirname, 'views'));
  13. app.set('view engine', 'ejs');

  14. // uncomment after placing your favicon in /public
  15. //app.use(favicon(path.join(__dirname, 'public', 'favicon.ico')));
  16. app.use(logger('dev'));
  17. app.use(bodyParser.json());
  18. app.use(bodyParser.urlencoded({ extended: false }));
  19. app.use(cookieParser());
  20. app.use(express.static(path.join(__dirname, 'public')));

  21. app.use('/', index);
  22. app.use('/users', users);
  23. app.use('/game',game);//extend

  24. // catch 404 and forward to error handler
  25. app.use(function(req, res, next) {
  26.   var err = new Error('Not Found');
  27.   err.status = 404;
  28.   next(err);
  29. });

  30. // error handler
  31. app.use(function(err, req, res, next) {
  32.   // set locals, only providing error in development
  33.   res.locals.message = err.message;
  34.   res.locals.error = req.app.get('env') === 'development' ? err : {};

  35.   // render the error page
  36.   res.status(err.status || 500);
  37.   res.render('error');
  38. });

  39. module.exports = app;
复制代码

以上注释了extend的语句是我新添了
然后在routes目录里新建一个game.js文件,代码如下:
  1. var express = require('express');
  2. var router = express.Router();

  3. /* GET home page. */
  4. router.get('/', function(req, res, next) {
  5.     res.render('game', { title: 'Express' });
  6. });

  7. module.exports = router;
复制代码

在views文件夹里新建一个game.ejs文件,代码如下:
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4.     <meta charset="UTF-8">
  5.     <title>little ball move</title>
  6. </head>
  7. <body onkeydown="test(event)">
  8. <h1>小球上下左右移动</h1>
  9. <canvas id="test" width="400" height="400" style="border:1px solid red">

  10. </canvas>
  11. <script>
  12.     var canvas1=document.getElementById('test');
  13.     var cxt=canvas1.getContext('2d');
  14.     var ballX=30;
  15.     var ballY=30;
  16.     function drawBall(){
  17.         cxt.beginPath();
  18.         cxt.fillStyle='#FF0000';
  19.         cxt.arc(ballX,ballY,10,0,Math.PI*2,true);
  20.         cxt.closePath();
  21.         cxt.fill();
  22.     }
  23.     drawBall();
  24.     function test(e){
  25.         var code=e.keyCode;
  26.         switch(code){
  27.             case 37:ballX--;
  28.                 break;
  29.             case 38:ballY--;
  30.                 break;
  31.             case 39:ballX++;
  32.                 break;
  33.             case 40:ballY++;
  34.                 break;
  35.         }
  36.         cxt.clearRect(0,0,400,400);
  37.         drawBall();
  38.     };
  39. </script>
  40. </body>
  41. </html>
复制代码

这个.ejs文件实际上就是网页模板,我们主要在这些文件上写代码。
public文件夹里是放图片等资源文件的地方
我们在index.ejs文件里写个超级链接测试一下连到新建的页面
  1. <!DOCTYPE html>
  2. <html>
  3.   <head>
  4.     <title><%= title %></title>
  5.     <link rel='stylesheet' href='/stylesheets/style.css' />
  6.   </head>
  7.   <body>
  8.     <h1><%= title %></h1>
  9.     <p>Welcome to <%= title %></p>
  10.     <a href="./game">to game</a>
  11.   </body>
  12. </html>
复制代码

然后按照昨天的方法启动服务器,打开网站,点一下那个超级链接就会成功连到我们新建的网页了,这个是我写的一个用上下左右键移动小球的案列

评分

参与人数 1荣誉 +6 鱼币 +6 贡献 +3 收起 理由
不二如是 + 6 + 6 + 3 加油!

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2017-6-2 07:13:07 | 显示全部楼层
XAMPP,强烈推荐介绍下~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2017-6-2 12:04:12 From FishC Mobile | 显示全部楼层
不二如是 发表于 2017-6-2 07:13
XAMPP,强烈推荐介绍下~

M就是mysql的意思,不过现在nosql数据库比较流行
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-6 01:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表