继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续
感谢您的支持,我会继续努力的
赞赏金额会直接到老师账户
将二维码发送给自己后长按识别
微信支付
支付宝支付

前端全栈入门:从零开始的全栈开发指南

慕丝7291255
关注TA
已关注
手记 281
粉丝 15
获赞 70
概述

本文介绍了前端全栈入门所需的各项技术,包括HTML、CSS、JavaScript的基础知识以及全栈开发的概念和优势。文中还提供了前端与后端技术结合的示例代码,并指导如何搭建个人博客项目。最后,文章简述了前端框架和后端技术的进阶学习方向,帮助读者全面掌握前端全栈入门所需技能。

前端与全栈开发简介
前端开发基础

前端开发是指创建用户界面并实现与用户交互的技术。前端开发的主要任务是将后端返回的数据通过浏览器展示出来,并实现用户与页面的交互。前端开发的核心技术包括HTML、CSS和JavaScript。

HTML基础语法

HTML (Hyper Text Markup Language) 是一种标记语言,用于创建网页。HTML文档由元素组成,每个元素都是一个标签。

例如,创建一个简单的HTML文档如下:

<!DOCTYPE html>
<html>
<head>
    <title>我的第一个网页</title>
</head>
<body>
    <h1>欢迎来到我的网站</h1>
    <p>这是一个简单的HTML文档。</p>
</body>
</html>

CSS基础样式

CSS (Cascading Style Sheets) 用于描述HTML元素的样式,包括颜色、字体、布局等。

<!DOCTYPE html>
<html>
<head>
    <title>网页样式示例</title>
    <style>
        body {
            background-color: lightblue;
        }
        h1 {
            color: white;
            text-align: center;
        }
    </style>
</head>
<body>
    <h1>这是一个标题</h1>
    <p>这是一个段落。</p>
</body>
</html>
何为全栈开发

全栈开发是指同时掌握前后端技术,能够独立完成一个项目的开发。全栈开发者不仅可以开发前端界面,还可以编写后端逻辑、设计数据库结构,甚至部署服务器。

全栈开发的优势

  1. 灵活性:全栈开发者可以快速切换前后端任务,灵活应对项目需求。
  2. 效率:全栈开发者可以减少前后端沟通成本,提高开发效率。
  3. 独立性:全栈开发者能够独立完成项目,减少对其他团队成员的依赖。
  4. 全面性:全栈开发者对整个系统有更全面的理解,有助于优化整个系统架构。

示例代码

全栈开发的一个简单示例是使用Node.js创建一个简单的服务器端应用,并使用前端技术展示数据。

// 服务器端代码(Node.js)
const http = require('http');
const fs = require('fs');

const server = http.createServer((req, res) => {
    fs.readFile('index.html', (err, data) => {
        if (err) {
            res.writeHead(500, { 'Content-Type': 'text/plain' });
            res.end('服务器错误');
        } else {
            res.writeHead(200, { 'Content-Type': 'text/html' });
            res.end(data);
        }
    });
});

server.listen(3000, () => {
    console.log('服务器运行在3000端口');
});
<!-- 前端代码(HTML+CSS) -->
<!DOCTYPE html>
<html>
<head>
    <title>简单示例</title>
    <style>
        body {
            background-color: lightblue;
        }
        h1 {
            color: white;
            text-align: center;
        }
    </style>
</head>
<body>
    <h1>欢迎访问我的网站</h1>
</body>
</html>
HTML与CSS入门
HTML基础语法

常见HTML标签

  • <h1><h6>:标题标签,<h1>最大,<h6>最小。
  • <p>:段落标签。
  • <a>:链接标签,用于创建超链接。
  • <img>:图片标签,用于插入图片。
  • <ul><ol>:无序列表和有序列表标签。
  • <li>:列表项标签。

实例代码

<!DOCTYPE html>
<html>
<head>
    <title>示例页面</title>
</head>
<body>
    <h1>标题</h1>
    <p>这是一个段落。</p>
    <a href="http://www.example.com">访问示例网站</a>
    <img src="image.jpg" alt="示例图片" />
    <ul>
        <li>列表项1</li>
        <li>列表项2</li>
    </ul>
    <ol>
        <li>有序列表项1</li>
        <li>有序列表项2</li>
    </ol>
</body>
</html>
CSS基础样式

常用CSS选择器

  • 元素选择器:h1
  • 类选择器:.example
  • ID选择器:#example
  • 伪类选择器::hover

实例代码

<!DOCTYPE html>
<html>
<head>
    <title>样式示例</title>
    <style>
        body {
            background-color: lightblue;
        }
        h1 {
            color: white;
            text-align: center;
        }
        .example {
            color: red;
        }
        #example {
            font-weight: bold;
        }
        li:hover {
            background-color: lightgray;
        }
    </style>
</head>
<body>
    <h1>标题</h1>
    <p class="example">这是一个段落。</p>
    <p id="example">这是另一个段落。</p>
    <ul>
        <li>列表项1</li>
        <li>列表项2</li>
    </ul>
</body>
</html>
常见HTML标签与CSS选择器

HTML标签与CSS选择器的结合

通过HTML标签与CSS选择器的结合,可以实现更复杂的样式和布局。

<!DOCTYPE html>
<html>
<head>
    <title>综合示例</title>
    <style>
        .container {
            width: 80%;
            margin: auto;
            background-color: lightgray;
            padding: 20px;
        }
        .header {
            background-color: lightblue;
            padding: 10px;
        }
        .content {
            padding: 20px;
        }
        .footer {
            background-color: lightyellow;
            padding: 10px;
            text-align: center;
        }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <h1>标题</h1>
        </div>
        <div class="content">
            <p>这是一个段落。</p>
            <p>这是另一个段落。</p>
        </div>
        <div class="footer">
            <p>版权所有</p>
        </div>
    </div>
</body>
</html>
JavaScript入门
JavaScript基础语法

JavaScript 是一种脚本语言,用于在网页上添加动态效果。JavaScript 可以更改HTML元素的内容、样式、属性等。

基本语法

// 变量声明
let message = 'Hello, World!';

// 函数定义
function sayHello() {
    console.log('Hello, World!');
}

// 调用函数
sayHello();

// 条件语句
if (message === 'Hello, World!') {
    console.log('正确');
} else {
    console.log('错误');
}

// 循环语句
for (let i = 0; i < 5; i++) {
    console.log(i);
}

// 数组
let numbers = [1, 2, 3, 4, 5];
for (let i = 0; i < numbers.length; i++) {
    console.log(numbers[i]);
}

// 对象
let person = {
    name: '张三',
    age: 25,
    sayName: function() {
        console.log(this.name);
    }
};

console.log(person.name);
person.sayName();

实例代码

let message = 'Hello, World!';
console.log(message);

function sayHello() {
    console.log('Hello, World!');
}

sayHello();

if (message === 'Hello, World!') {
    console.log('正确');
} else {
    console.log('错误');
}

for (let i = 0; i < 5; i++) {
    console.log(i);
}

let numbers = [1, 2, 3, 4, 5];
for (let i = 0; i < numbers.length; i++) {
    console.log(numbers[i]);
}

let person = {
    name: '张三',
    age: 25,
    sayName: function() {
        console.log(this.name);
    }
};

console.log(person.name);
person.sayName();
DOM操作

DOM (Document Object Model) 是一种树形结构,表示HTML文档。DOM 操作涉及获取、修改、添加或删除HTML元素及其属性。

获取和修改元素

// 获取元素
let element = document.getElementById('example');

// 修改元素属性
element.textContent = '新内容';

// 修改元素样式
element.style.color = 'red';

添加和删除元素

// 创建新元素
let newElement = document.createElement('div');
newElement.textContent = '新元素';

// 添加新元素到DOM
document.body.appendChild(newElement);

// 删除元素
document.body.removeChild(newElement);

实例代码

<!DOCTYPE html>
<html>
<head>
    <title>DOM操作示例</title>
</head>
<body>
    <div id="example">原始内容</div>
    <script>
        // 获取元素
        let element = document.getElementById('example');

        // 修改元素属性
        element.textContent = '新内容';

        // 修改元素样式
        element.style.color = 'red';

        // 创建新元素
        let newElement = document.createElement('div');
        newElement.textContent = '新元素';

        // 添加新元素到DOM
        document.body.appendChild(newElement);

        // 删除元素
        document.body.removeChild(newElement);
    </script>
</body>
</html>
常用JavaScript库与框架(如jQuery)

jQuery

jQuery 是一个快速、小巧的JavaScript库,用于简化HTML文档操作、事件处理和动画效果。

基本用法

<!DOCTYPE html>
<html>
<head>
    <title>jQuery示例</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <div id="example">原始内容</div>
    <script>
        // 获取元素
        $('#example').text('新内容');

        // 修改元素样式
        $('#example').css('color', 'red');

        // 添加新元素到DOM
        $('<div>').text('新元素').appendTo('body');
    </script>
</body>
</html>

事件处理

<!DOCTYPE html>
<html>
<head>
    <title>jQuery示例</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <button id="example">点击我</button>
    <script>
        // 绑定事件
        $('#example').on('click', function() {
            alert('按钮被点击了');
        });
    </script>
</body>
</html>
后端开发基础
服务器端语言入门(如Node.js)

Node.js 是一个基于Chrome V8引擎的JavaScript运行环境,可以在服务端运行JavaScript。Node.js 使用一个事件驱动、非阻塞的I/O模型,使其轻量且高效。

基本用法

const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello, World!\n');
});

server.listen(3000, () => {
    console.log('服务器运行在3000端口');
});

实例代码

const http = require('http');

const server = http.createServer((req, res) => {
    res.writeHead(200, { 'Content-Type': 'text/plain' });
    res.end('Hello, World!\n');
});

server.listen(3000, () => {
    console.log('服务器运行在3000端口');
});
数据库基础(如MySQL)

MySQL 是一个开源的关系型数据库管理系统,广泛应用于Web应用中。MySQL 使用SQL(Structured Query Language)进行数据操作。

安装与配置

sudo apt-get update
sudo apt-get install mysql-server

基本操作

-- 创建数据库
CREATE DATABASE exampledb;

-- 使用数据库
USE exampledb;

-- 创建表
CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(255),
    email VARCHAR(255)
);

-- 插入数据
INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com');
INSERT INTO users (name, email) VALUES ('李四', 'lisi@example.com');

-- 查询数据
SELECT * FROM users;

实例代码

const mysql = require('mysql');

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'exampledb'
});

connection.connect((err) => {
    if (err) {
        console.error('数据库连接失败: ' + err.stack);
        return;
    }
    console.log('数据库连接成功');
});

connection.query('SELECT * FROM users', (err, results) => {
    if (err) {
        console.error('查询失败: ' + err.stack);
        return;
    }
    console.log('查询成功: ' + results);
});

connection.end((err) => {
    if (err) {
        console.error('断开数据库连接失败: ' + err.stack);
        return;
    }
    console.log('数据库连接已断开');
});
RESTful API设计

REST (Representational State Transfer) 是一种软件架构风格,用于设计网络应用。RESTful API 是遵循REST原则设计的API。

基本原则

  • 资源识别:使用URL识别资源。
  • 操作无状态:每次请求都携带所有必需信息。
  • 统一接口:使用标准HTTP方法(GET、POST、PUT、DELETE)。
  • 分层系统:每个层只能与其相邻层进行通信。

示例代码

创建一个简单的RESTful API

const express = require('express');
const app = express();
const port = 3001;

app.get('/users', (req, res) => {
    res.json([{ id: 1, name: '张三', email: 'zhangsan@example.com' }, { id: 2, name: '李四', email: 'lisi@example.com' }]);
});

app.post('/users', (req, res) => {
    const newUser = req.body;
    res.status = 201;
    res.json(newUser);
});

app.put('/users/:id', (req, res) => {
    const id = req.params.id;
    const updatedUser = req.body;
    res.json(updatedUser);
});

app.delete('/users/:id', (req, res) => {
    const id = req.params.id;
    res.json({ id: id });
});

app.listen(port, () => {
    console.log(`RESTful API 运行在 ${port} 端口`);
});
项目实战
编写个人博客

实现步骤

  1. 设计数据库结构:创建用户和文章表。
  2. 编写前端页面:展示文章列表、文章详情、新增文章。
  3. 编写后端API:提供文章增删改查接口。
  4. 前端与后端交互:使用JavaScript与后端API进行交互。

数据库设计

CREATE DATABASE blog;
USE blog;

CREATE TABLE users (
    id INT AUTO_INCREMENT PRIMARY KEY,
    username VARCHAR(255),
    password VARCHAR(255)
);

CREATE TABLE posts (
    id INT AUTO_INCREMENT PRIMARY KEY,
    title VARCHAR(255),
    content TEXT,
    author_id INT,
    FOREIGN KEY (author_id) REFERENCES users(id)
);

前端代码示例

<!DOCTYPE html>
<html>
<head>
    <title>个人博客</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
</head>
<body>
    <h1>我的博客</h1>
    <ul id="posts-list"></ul>
    <script>
        $(document).ready(function() {
            $('#posts-list').load('/posts');
        });
    </script>
</body>
</html>

后端代码示例

const express = require('express');
const mysql = require('mysql');
const app = express();
const port = 3001;

const connection = mysql.createConnection({
    host: 'localhost',
    user: 'root',
    password: 'password',
    database: 'blog'
});

connection.connect((err) => {
    if (err) {
        console.error('数据库连接失败: ' + err.stack);
        return;
    }
    console.log('数据库连接成功');
});

app.get('/posts', (req, res) => {
    connection.query('SELECT * FROM posts', (err, results) => {
        if (err) {
            console.error('查询失败: ' + err.stack);
            return;
        }
        res.json(results);
    });
});

app.post('/posts', (req, res) => {
    const post = req.body;
    connection.query('INSERT INTO posts SET ?', post, (err, result) => {
        if (err) {
            console.error('插入失败: ' + err.stack);
            return;
        }
        res.status = 201;
        res.json(post);
    });
});

app.put('/posts/:id', (req, res) => {
    const id = req.params.id;
    const updatedPost = req.body;
    connection.query('UPDATE posts SET ? WHERE id = ?', [updatedPost, id], (err, result) => {
        if (err) {
            console.error('更新失败: ' + err.stack);
            return;
        }
        res.json(updatedPost);
    });
});

app.delete('/posts/:id', (req, res) => {
    const id = req.params.id;
    connection.query('DELETE FROM posts WHERE id = ?', id, (err, result) => {
        if (err) {
            console.error('删除失败: ' + err.stack);
            return;
        }
        res.json({ id: id });
    });
});

app.listen(port, () => {
    console.log(`博客API运行在 ${port} 端口`);
});
部署到线上环境

运行环境准备

  1. 选择服务器:购买云服务器或使用现有的服务器。
  2. 安装Node.js:确保服务器上安装了Node.js。
  3. 安装MySQL:安装并配置MySQL数据库。
  4. 部署代码:将代码上传到服务器。
  5. 启动应用:使用PM2等工具启动应用。

示例代码

# 安装Node.js
sudo apt-get update
sudo apt-get install nodejs npm

# 安装PM2
npm install pm2@latest -g

# 部署代码
git clone https://github.com/your-repo/blog.git
cd blog

# 安装依赖
npm install

# 启动应用
pm2 start app.js

# 设置为开机启动
pm2 startup
pm2 save
进阶学习方向
深入前端框架(如React、Vue.js)

React

React 是一个用于构建用户界面的JavaScript库,由Facebook开发并维护。React 使用组件化思想,使代码更易于维护和复用。

基本用法

import React from 'react';
import ReactDOM from 'react-dom';

class App extends React.Component {
    render() {
        return (
            <div>
                <h1>Hello, World!</h1>
            </div>
        );
    }
}

ReactDOM.render(<App />, document.getElementById('root'));

Vue.js

Vue.js 是一个渐进式的JavaScript框架,由尤雨溪开发并维护。Vue.js 使用数据驱动和组件化的思想,易于学习和使用。

基本用法

<!DOCTYPE html>
<html>
<head>
    <title>Vue示例</title>
    <script src="https://cdn.jsdelivr.net/npm/vue@2"></script>
</head>
<body>
    <div id="app">
        <h1>{{ message }}</h1>
    </div>
    <script>
        new Vue({
            el: '#app',
            data: {
                message: 'Hello, World!'
            }
        });
    </script>
</body>
</html>
深入后端技术(如Express.js、Django)

Express.js

Express.js 是一个基于Node.js的快速、简洁的Web应用框架。Express.js 提供了强大的路由功能和中间件,简化了Web应用的开发。

基本用法

const express = require('express');
const app = express();
const port = 3002;

app.get('/', (req, res) => {
    res.send('Hello, World!');
});

app.listen(port, () => {
    console.log(`Express应用运行在 ${port} 端口`);
});

Django

Django 是一个高级的Python Web框架,由众多开发者维护。Django 采用了MVC(Model-View-Controller)架构,提供了丰富的功能和工具。

基本用法

# models.py
from django.db import models

class Post(models.Model):
    title = models.CharField(max_length=255)
    content = models.TextField()

# views.py
from django.http import HttpResponse
from .models import Post

def index(request):
    posts = Post.objects.all()
    output = ', '.join([p.title for p in posts])
    return HttpResponse(output)

# urls.py
from django.urls import path
from .views import index

urlpatterns = [
    path('', index, name='index'),
]
持续集成与自动化部署

概念介绍

持续集成(Continuous Integration, CI)是一种软件开发实践,通过频繁地将代码集成到共享仓库中,以快速发现和解决问题。自动化部署(Continuous Deployment, CD)是指将代码自动部署到生产环境,减少人工干预。

实现步骤

  1. 代码版本控制:使用Git进行代码版本控制。
  2. 构建自动化:使用Docker等工具进行容器化部署。
  3. 持续集成:使用Jenkins、Travis CI等工具进行持续集成。
  4. 持续部署:使用Kubernetes等工具进行自动化部署。

示例代码

Dockerfile 示例

FROM node:14

WORKDIR /app

COPY package.json package-lock.json ./
RUN npm install

COPY . .

EXPOSE 3000
CMD ["node", "app.js"]

Jenkinsfile 示例

pipeline {
    agent any

    stages {
        stage('Build') {
            steps {
                sh 'npm install'
            }
        }

        stage('Test') {
            steps {
                sh 'npm test'
            }
        }

        stage('Deploy') {
            steps {
                sh 'docker build -t myapp:latest .'
                sh 'docker tag myapp:latest myregistry/myapp:latest'
                sh 'docker push myregistry/myapp:latest'
            }
        }
    }
}
打开App,阅读手记
0人推荐
发表评论
随时随地看视频慕课网APP