用node.js+express+ejs+bootstrap来建立一个基本网页

http://www.w3cfuns.com/blog-5441597-5397741.html

这篇文章旨在介绍前沿技术,不会过多的讨论技术细节和个个技术之间的优缺点.适合想学习新技术的青年.如果你是老手,这篇文章并不适合你.
then. here we go!
step 1: 环境配置
首先要在自己的机器上配置环境(安装node.js和npm).
深入浅出Node.js(二): Node.js&NPM的安装与配置
更多安装实例:
如果你用的操作系统是:windows  安装node.js实例
如果你用的操作系统是:MacOSX   macosx下安装node.js
如果你用的操作系统是:linux    linux下安装node.js
其他系统请用必应搜索下.

安装检查
如果你已经安装好了node.js和npm.那么打开你的命令提示符.输入命令会看见下面的效果.

输入npm -v 会出现版本.

更多关于npm 包命令的介绍. npm基础详解

step 2:安装express

由于服务器在国外,网速不好会有卡流的情况.请使用镜像安装.   镜像安装(国内福音)


step 3:建立网站.
使用 express -e -s less helloworld

根据提示 输入cd helloworld 回车 然后输入 npm install  安装包依赖



安装结束后,进入安装目录 可以看见


运行express服务器 继续输入 node app.js 打开浏览器127.0.0.1:3000 可以看见

express使用mvc模式开发的.请求由路由分配到对于的模块.
EJS
ejs简介(不复杂)
到 views文件夹下,找到index.ejs文件.

注意,express和模板引擎直接没有绑定关系.不是说express只支持ejs或者jade.express支持几乎所有模板.详细请移步  [url=: http://expressjs.com/guide.html]express指南[/url]

修改模板文件:  使用bootstap 前端框架 为了加快布局进度,使用可视化布局    bootstrap可视化布局系统
数据写就写简单点.
  1. <!doctype html>
  2. <html lang="zh-cn">
  3. <head>
  4.         <title><%=title%></title>
  5. <!-- 最新 Bootstrap 核心 CSS 文件 -->
  6. <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/css/bootstrap.min.css">

  7. <!-- 可选的Bootstrap主题文件(一般不用引入) -->
  8. <link rel="stylesheet" href="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/css/bootstrap-theme.min.css">

  9. <!-- jQuery文件。务必在bootstrap.min.js 之前引入 -->
  10. <script src="http://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script>

  11. <!-- 最新的 Bootstrap 核心 JavaScript 文件 -->
  12. <script src="http://cdn.bootcss.com/twitter-bootstrap/3.0.3/js/bootstrap.min.js"></script>


  13. </head>
  14. <body>
  15.         <div class="container-fluid">
  16.         <div class="row-fluid">
  17.                 <div class="span12">
  18.                         <h3 class="text-center">
  19.                                 这是一个简单的<%=title%>网站
  20.                         </h3>
  21.                         <div class="navbar">
  22.                                 <div class="navbar-inner">
  23.                                         <div class="container-fluid">
  24.                                                  <a data-target=".navbar-responsive-collapse" data-toggle="collapse" class="btn btn-navbar"><span class="icon-bar"></span><span class="icon-bar"></span><span class="icon-bar"></span></a> <a href="#" class="brand">网站名</a>
  25.                                                 <div class="nav-collapse collapse navbar-responsive-collapse">
  26.                                                         <ul class="nav">
  27.                                                                 <li class="active">
  28.                                                                         <a href="#">主页</a>
  29.                                                                 </li>
  30.                                                                 <li>
  31.                                                                         <a href="#">链接</a>
  32.                                                                 </li>
  33.                                                                 <li>
  34.                                                                         <a href="#">链接</a>
  35.                                                                 </li>
  36.                                                                 <li class="dropdown">
  37.                                                                          <a data-toggle="dropdown" class="dropdown-toggle" href="#">下拉菜单<strong class="caret"></strong></a>
  38.                                                                         <ul class="dropdown-menu">
  39.                                                                                 <li>
  40.                                                                                         <a href="#">下拉导航1</a>
  41.                                                                                 </li>
  42.                                                                                 <li>
  43.                                                                                         <a href="#">下拉导航2</a>
  44.                                                                                 </li>
  45.                                                                                 <li>
  46.                                                                                         <a href="#">其他</a>
  47.                                                                                 </li>
  48.                                                                                 <li class="divider">
  49.                                                                                 </li>
  50.                                                                                 <li class="nav-header">
  51.                                                                                         标签
  52.                                                                                 </li>
  53.                                                                                 <li>
  54.                                                                                         <a href="#">链接1</a>
  55.                                                                                 </li>
  56.                                                                                 <li>
  57.                                                                                         <a href="#">链接2</a>
  58.                                                                                 </li>
  59.                                                                         </ul>
  60.                                                                 </li>
  61.                                                         </ul>
  62.                                                         <ul class="nav pull-right">
  63.                                                                 <li>
  64.                                                                         <a href="#">右边链接</a>
  65.                                                                 </li>
  66.                                                                 <li class="divider-vertical">
  67.                                                                 </li>
  68.                                                                 <li class="dropdown">
  69.                                                                          <a data-toggle="dropdown" class="dropdown-toggle" href="#">下拉菜单<strong class="caret"></strong></a>
  70.                                                                         <ul class="dropdown-menu">
  71.                                                                                 <li>
  72.                                                                                         <a href="#">下拉导航1</a>
  73.                                                                                 </li>
  74.                                                                                 <li>
  75.                                                                                         <a href="#">下拉导航2</a>
  76.                                                                                 </li>
  77.                                                                                 <li>
  78.                                                                                         <a href="#">其他</a>
  79.                                                                                 </li>
  80.                                                                                 <li class="divider">
  81.                                                                                 </li>
  82.                                                                                 <li>
  83.                                                                                         <a href="#">链接3</a>
  84.                                                                                 </li>
  85.                                                                         </ul>
  86.                                                                 </li>
  87.                                                         </ul>
  88.                                                 </div>
  89.                                                 
  90.                                         </div>
  91.                                 </div>
  92.                                 
  93.                         </div>
  94.                 </div>
  95.         </div>
  96.         <div class="row-fluid">
  97.                 <div class="span12">
  98.                         <ul class="breadcrumb">
  99.                                 <li>
  100.                                         <a href="#">主页</a> <span class="divider">/</span>
  101.                                 </li>
  102.                                 <li>
  103.                                         <a href="#">类目</a> <span class="divider">/</span>
  104.                                 </li>
  105.                                 <li class="active">
  106.                                         主题
  107.                                 </li>
  108.                         </ul>
  109.                         <div class="page-header">
  110.                                 <h1>
  111.                                         页标题范例 <small>此处编写页标题</small>
  112.                                 </h1>
  113.                         </div>
  114.                         <h2>
  115.                                 标题
  116.                         </h2>
  117.                         <p>
  118.                                 本可视化布局程序在HTML5浏览器上运行更加完美, 能实现自动本地化保存, 即使关闭了网页, 下一次打开仍然能恢复上一次的操作.
  119.                         </p>
  120.                         <p>
  121.                                 <a class="btn" href="#">查看更多 »</a>
  122.                         </p>
  123.                         <ul class="thumbnails">
  124.                                 <li class="span4">
  125.                                         <div class="thumbnail">
  126.                                                 <img alt="300x200" src="img/people.jpg" />
  127.                                                 <div class="caption">
  128.                                                         <h3>
  129.                                                                 冯诺尔曼结构
  130.                                                         </h3>
  131.                                                         <p>
  132.                                                                 也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置。
  133.                                                         </p>
  134.                                                         <p>
  135.                                                                 <a class="btn btn-primary" href="#">浏览</a> <a class="btn" href="#">分享</a>
  136.                                                         </p>
  137.                                                 </div>
  138.                                         </div>
  139.                                 </li>
  140.                                 <li class="span4">
  141.                                         <div class="thumbnail">
  142.                                                 <img alt="300x200" src="img/city.jpg" />
  143.                                                 <div class="caption">
  144.                                                         <h3>
  145.                                                                 哈佛结构
  146.                                                         </h3>
  147.                                                         <p>
  148.                                                                 哈佛结构是一种将程序指令存储和数据存储分开的存储器结构,它的主要特点是将程序和数据存储在不同的存储空间中,进行独立编址。
  149.                                                         </p>
  150.                                                         <p>
  151.                                                                 <a class="btn btn-primary" href="#">浏览</a> <a class="btn" href="#">分享</a>
  152.                                                         </p>
  153.                                                 </div>
  154.                                         </div>
  155.                                 </li>
  156.                                 <li class="span4">
  157.                                         <div class="thumbnail">
  158.                                                 <img alt="300x200" src="img/sports.jpg" />
  159.                                                 <div class="caption">
  160.                                                         <h3>
  161.                                                                 改进型哈佛结构
  162.                                                         </h3>
  163.                                                         <p>
  164.                                                                 改进型的哈佛结构具有一条独立的地址总线和一条独立的数据总线,两条总线由程序存储器和数据存储器分时复用,使结构更紧凑。
  165.                                                         </p>
  166.                                                         <p>
  167.                                                                 <a class="btn btn-primary" href="#">浏览</a> <a class="btn" href="#">分享</a>
  168.                                                         </p>
  169.                                                 </div>
  170.                                         </div>
  171.                                 </li>
  172.                         </ul>
  173.                         <div class="progress progress-striped active">
  174.                                 <div class="bar">
  175.                                 </div>
  176.                         </div>
  177.                          <a id="modal-612442" href="#modal-container-612442" role="button" class="btn" data-toggle="modal">触发遮罩窗体</a>
  178.                         
  179.                         <div id="modal-container-612442" class="modal hide fade" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
  180.                                 <div class="modal-header">
  181.                                          <button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
  182.                                         <h3 id="myModalLabel">
  183.                                                 标题栏
  184.                                         </h3>
  185.                                 </div>
  186.                                 <div class="modal-body">
  187.                                         <p>
  188.                                                 显示信息
  189.                                         </p>
  190.                                 </div>
  191.                                 <div class="modal-footer">
  192.                                          <button class="btn" data-dismiss="modal" aria-hidden="true">关闭</button> <button class="btn btn-primary">保存设置</button>
  193.                                 </div>
  194.                         </div>
  195.                         <div class="alert alert-info">
  196.                                  <button type="button" class="close" data-dismiss="alert">×</button>
  197.                                 <h4>
  198.                                         提示!
  199.                                 </h4> <strong>警告!</strong> 请注意你的个人隐私安全.
  200.                         </div>
  201.                         <div class="carousel slide" id="carousel-986330">
  202.                                 <ol class="carousel-indicators">
  203.                                         <li class="active" data-slide-to="0" data-target="#carousel-986330">
  204.                                         </li>
  205.                                         <li data-slide-to="1" data-target="#carousel-986330">
  206.                                         </li>
  207.                                         <li data-slide-to="2" data-target="#carousel-986330">
  208.                                         </li>
  209.                                 </ol>
  210.                                 <div class="carousel-inner">
  211.                                         <div class="item active">
  212.                                                 <img alt="" src="img/1.jpg" />
  213.                                                 <div class="carousel-caption">
  214.                                                         <h4>
  215.                                                                 棒球
  216.                                                         </h4>
  217.                                                         <p>
  218.                                                                 棒球运动是一种以棒打球为主要特点,集体性、对抗性很强的球类运动项目,在美国、日本尤为盛行。
  219.                                                         </p>
  220.                                                 </div>
  221.                                         </div>
  222.                                         <div class="item">
  223.                                                 <img alt="" src="img/2.jpg" />
  224.                                                 <div class="carousel-caption">
  225.                                                         <h4>
  226.                                                                 冲浪
  227.                                                         </h4>
  228.                                                         <p>
  229.                                                                 冲浪是以海浪为动力,利用自身的高超技巧和平衡能力,搏击海浪的一项运动。运动员站立在冲浪板上,或利用腹板、跪板、充气的橡皮垫、划艇、皮艇等驾驭海浪的一项水上运动。
  230.                                                         </p>
  231.                                                 </div>
  232.                                         </div>
  233.                                         <div class="item">
  234.                                                 <img alt="" src="img/3.jpg" />
  235.                                                 <div class="carousel-caption">
  236.                                                         <h4>
  237.                                                                 自行车
  238.                                                         </h4>
  239.                                                         <p>
  240.                                                                 以自行车为工具比赛骑行速度的体育运动。1896年第一届奥林匹克运动会上被列为正式比赛项目。环法赛为最著名的世界自行车锦标赛。
  241.                                                         </p>
  242.                                                 </div>
  243.                                         </div>
  244.                                 </div> <a data-slide="prev" href="#carousel-986330" class="left carousel-control">‹</a> <a data-slide="next" href="#carousel-986330" class="right carousel-control">›</a>
  245.                         </div>
  246.                         <div class="tabbable" id="tabs-529574">
  247.                                 <ul class="nav nav-tabs">
  248.                                         <li class="active">
  249.                                                 <a href="#panel-931288" data-toggle="tab">第一部分</a>
  250.                                         </li>
  251.                                         <li>
  252.                                                 <a href="#panel-70665" data-toggle="tab">第二部分</a>
  253.                                         </li>
  254.                                 </ul>
  255.                                 <div class="tab-content">
  256.                                         <div class="tab-pane active" id="panel-931288">
  257.                                                 <p>
  258.                                                         第一部分内容.
  259.                                                 </p>
  260.                                         </div>
  261.                                         <div class="tab-pane" id="panel-70665">
  262.                                                 <p>
  263.                                                         第二部分内容.
  264.                                                 </p>
  265.                                         </div>
  266.                                 </div>
  267.                         </div>
  268.                         <div class="hero-unit">
  269.                                 <h1>
  270.                                         Hello, world!
  271.                                 </h1>
  272.                                 <p>
  273.                                         这是一个可视化布局模板, 你可以点击模板里的文字进行修改, 也可以通过点击弹出的编辑框进行富文本修改. 拖动区块能实现排序.
  274.                                 </p>
  275.                                 <p>
  276.                                         <a class="btn btn-primary btn-large" href="#">参看更多 »</a>
  277.                                 </p>
  278.                         </div> <span class="badge badge-success">1</span> <span class="label badge-success">文字标签</span>
  279.                         <div class="pagination">
  280.                                 <ul>
  281.                                         <li>
  282.                                                 <a href="#">上一页</a>
  283.                                         </li>
  284.                                         <li>
  285.                                                 <a href="#">1</a>
  286.                                         </li>
  287.                                         <li>
  288.                                                 <a href="#">2</a>
  289.                                         </li>
  290.                                         <li>
  291.                                                 <a href="#">3</a>
  292.                                         </li>
  293.                                         <li>
  294.                                                 <a href="#">4</a>
  295.                                         </li>
  296.                                         <li>
  297.                                                 <a href="#">5</a>
  298.                                         </li>
  299.                                         <li>
  300.                                                 <a href="#">下一页</a>
  301.                                         </li>
  302.                                 </ul>
  303.                         </div><img class="img-polaroid" alt="140x140" src="img/a.jpg" />
  304.                 </div>
  305.         </div>
  306. </div>
  307. </body>
  308. </html>
复制代码



模板改好了,接下来修改数据.进入routes/index.js文件. 修改{ title: 'Express' }为{title:'w3cfuns'}.
保存后. 
进入命令控制符进入helloworld目录 输入node app.js 打开浏览器127.0.0.1:3000

你的会是w3cfun网站.这就是模板,实现数据和显示的分离.
至此,你已经大概了解了一个网站的诞生.虽然这个网站不是很全面.但是包括了大多数东西了,够你消化一会了.
网站参考:
js模板引擎:
jade: http://jade-lang.com/
ejs: http://embeddedjs.com/  (需要翻墙)
Npm 包
ejs包: https://www.npmjs.org/package/ejs
express中文网站: http://expressjs.jser.us/3x_zh-cn/api.html
NPM 官网: https://www.npmjs.org/
node 
node API中文文档: http://nodeapi.ucdok.com/api/
node 官网: http://nodejs.org/
css
less: http://www.bootcss.com/p/lesscss/
前端开发框架
bootstrap 中文网站: http://www.bootcss.com/
UIframe   中文网站: http://www.uiframe.com/
pure : http://purecss.io/
设计师:
优秀网页设计师联盟: http://www.uisdc.com/
分享到:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。
好的,以下是一个简单的示例代码,实现了一个基本的博客系统。 首先,我们需要创建一个新的node.js项目,并在项目中安装express和mysql模块。 ```bash mkdir blog cd blog npm init -y npm install express mysql --save ``` 然后,我们需要创建一个app.js文件,并在其中配置express应用程序。 ```javascript const express = require('express'); const mysql = require('mysql'); const app = express(); // 配置中间件 app.use(express.urlencoded({ extended: false })); app.use(express.json()); app.use(express.static('public')); // 连接数据库 const db = mysql.createConnection({ host: 'localhost', user: 'root', password: 'password', database: 'blog' }); db.connect((err) => { if (err) { console.error('error connecting: ' + err.stack); return; } console.log('connected as id ' + db.threadId); }); // 设置路由 app.get('/', (req, res) => { db.query('SELECT * FROM posts', (err, results) => { if (err) throw err; res.render('index.ejs', { posts: results }); }); }); app.get('/post/:id', (req, res) => { const id = req.params.id; db.query('SELECT * FROM posts WHERE id = ?', [id], (err, results) => { if (err) throw err; res.render('post.ejs', { post: results[0] }); }); }); app.get('/create', (req, res) => { res.render('create.ejs'); }); app.post('/create', (req, res) => { const title = req.body.title; const content = req.body.content; db.query('INSERT INTO posts SET ?', { title, content }, (err, results) => { if (err) throw err; res.redirect('/'); }); }); // 启动服务器 app.listen(3000, () => { console.log('Server started on port 3000'); }); ``` 在上面的代码中,我们使用了ejs模板引擎来渲染HTML页面。我们需要在项目中创建一个views文件夹,并在其中创建index.ejs、post.ejs和create.ejs文件。 index.ejs: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Blog</title> </head> <body> <h1>Blog</h1> <ul> <% for (let post of posts) { %> <li> <a href="/post/<%= post.id %>"><%= post.title %></a> </li> <% } %> </ul> <a href="/create">Create a new post</a> </body> </html> ``` post.ejs: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title><%= post.title %></title> </head> <body> <h1><%= post.title %></h1> <p><%= post.content %></p> <a href="/">Back to index</a> </body> </html> ``` create.ejs: ```html <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Create a new post</title> </head> <body> <h1>Create a new post</h1> <form action="/create" method="POST"> <input type="text" name="title" placeholder="Title"> <textarea name="content" placeholder="Content"></textarea> <button type="submit">Create</button> </form> </body> </html> ``` 最后,我们需要在项目中创建一个public文件夹,并在其中创建一个style.css文件,来为页面添加样式。 ```css body { font-family: Arial, sans-serif; } h1 { font-size: 32px; font-weight: bold; } ul { list-style: none; padding: 0; } li { margin-bottom: 10px; } a { text-decoration: none; color: blue; } input[type="text"], textarea { display: block; width: 100%; margin-bottom: 10px; } button[type="submit"] { display: block; margin-top: 10px; } ``` 以上就是一个简单的node.js+express+mysql实现博客系统的示例代码,可以根据实际情况进行调整和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值