小站,.net改版成Nodejs,上线鸟...

小站,.net改版成Nodejs,上线鸟…

http://www.topcoin.cn 原来.net写的,没有在继续开发了,现在用node重新写,目前吧新闻模块替换掉了,顺便前端也改成支持手机访问,还有些模块暂未完成. 因原来win环境,所以暂时还是部署在win03上,数据库mysql。

前端使用了些html5东东,ie9以下的请无视吧!浏览器兼容没仔细处理,主要在chrome,还有手机上调试通过.

欢迎拍砖!

8 回复

小站,.net改版成Node.js,上线鸟…

我最近对我的小站进行了一个重大改版。原来的网站是用.NET技术编写的,但因为缺乏后续的开发维护,我决定将其改写为Node.js。目前,我首先替换了新闻模块,并且对前端进行了优化,使其能够更好地支持手机访问。虽然还有一些模块尚未完成,但我已经取得了初步的成功。

技术栈

  • 后端: Node.js + Express
  • 数据库: MySQL
  • 前端: HTML5 + CSS3 + JavaScript (ES6)
  • 服务器: Windows Server 2003 (由于原有环境限制)

后端改写

安装依赖

首先需要安装Node.js和npm(Node包管理器)。然后在项目根目录下创建package.json文件,以便管理依赖库。你可以使用以下命令初始化项目:

npm init -y

接下来,安装Express框架,它将帮助我们快速搭建后端服务:

npm install express --save

创建服务器

接下来,我们需要创建一个简单的Express服务器。在项目根目录下创建一个名为server.js的文件,并添加以下代码:

const express = require('express');
const app = express();
const port = process.env.PORT || 3000;

// 示例路由
app.get('/', (req, res) => {
    res.send('Hello from Node.js!');
});

app.listen(port, () => {
    console.log(`Server is running on http://localhost:${port}`);
});

这段代码创建了一个基本的Express应用,并监听3000端口。当访问根路径时,会返回一条简单的消息。

数据库连接

为了连接MySQL数据库,你需要安装mysql库:

npm install mysql --save

然后在你的服务器代码中添加数据库连接逻辑:

const mysql = require('mysql');

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'yourusername',
    password: 'yourpassword',
    database: 'yourdatabase'
});

connection.connect((err) => {
    if (err) throw err;
    console.log('Connected to MySQL database!');
});

// 示例查询
app.get('/news', (req, res) => {
    connection.query('SELECT * FROM news', (error, results) => {
        if (error) throw error;
        res.json(results);
    });
});

这段代码建立了与MySQL数据库的连接,并提供了一个简单的API接口来获取新闻数据。

前端优化

前端部分,我引入了一些HTML5的新特性,比如<video>标签用于视频播放,<canvas>用于绘制图形等。同时,为了适应移动设备,我还使用了响应式布局,并确保页面在Chrome和移动设备上的表现良好。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>TopCoin News</title>
    <link rel="stylesheet" href="styles.css">
</head>
<body>
    <header>
        <h1>TopCoin News</h1>
    </header>
    <main>
        <!-- 动态加载新闻 -->
        <div id="news-container"></div>
    </main>
    <script src="scripts.js"></script>
</body>
</html>

scripts.js中,我们可以使用JavaScript来动态加载新闻数据:

document.addEventListener('DOMContentLoaded', () => {
    fetch('/news')
        .then(response => response.json())
        .then(data => {
            const newsContainer = document.getElementById('news-container');
            data.forEach(newsItem => {
                const newsDiv = document.createElement('div');
                newsDiv.textContent = newsItem.title;
                newsContainer.appendChild(newsDiv);
            });
        })
        .catch(error => console.error('Error loading news:', error));
});

这段代码通过AJAX请求从后端获取新闻数据,并动态地将其展示在页面上。

总结

尽管这次改版还在进行中,但目前取得的效果令人满意。感谢大家的支持和反馈!如果你有任何问题或建议,请随时联系我。


我的链接<a href=“http://oideas.herokuapp.com/”>http://oideas.herokuapp.com/</a> 欢迎互相交换,虽然我的小站还没成型,请不要鄙视。(可参考赞助页面,p一张720*497的关于你的小站的image给我,发到我邮箱jov123@163.com,永久放置哦)

请问,图片存储用的是第三方图片服务器还是代码服务器呢

不是第三方的 目前在同一个服务器。

亲,暂时只接受一级域名的友联哦!

请问用的谁家的服务器?速度不错呀,目前正在寻找免备案价格良心北京连接速度可以的vps:)

hk云主机…

关于将一个基于.NET的小站改版为Node.js并上线,以下是一些建议和步骤:

  1. 项目迁移

    • 首先,你需要将.NET项目的业务逻辑迁移到Node.js。可以创建一个新的Node.js项目,并根据现有的.NET代码逻辑重构API接口。
  2. 数据库连接

    • Node.js中常用的MySQL库是mysql。你可以使用以下示例代码连接到MySQL数据库:

      const mysql = require('mysql');
      
      const connection = mysql.createConnection({
        host: 'localhost',
        user: 'yourusername',
        password: 'yourpassword',
        database: 'yourdatabase'
      });
      
      connection.connect((err) => {
        if (err) throw err;
        console.log('Connected to MySQL database!');
      });
      
  3. 前端优化

    • 由于你提到使用了一些HTML5技术,这可能会影响低版本浏览器(如IE9以下)的兼容性。可以使用一些工具,如Babel进行ES6转译,或者使用Polyfill服务以增强浏览器功能。
    • 确保前端页面在Chrome、Safari等现代浏览器以及移动设备上都能正常工作。
  4. 部署与测试

    • 在Windows Server 2003上部署Node.js应用,可以通过配置Nginx或Apache作为反向代理服务器来运行Node.js应用。
    • 使用PM2等进程管理工具确保Node.js应用稳定运行。
  5. 发布

    • 在完成所有功能测试后,可以逐步将新旧版本切换上线。如果可能的话,建议使用蓝绿部署策略,以减少对用户的影响。

希望以上信息对你有所帮助,如果有更具体的技术问题,欢迎进一步讨论。

回到顶部