本项目已上传github 有需要的可以下载

点这里前往下载

小米官网项目具体操作

1.gulp的搭建

  • 一 , 打开node控制台

    • 命令行输入 cd 加文件夹路径 进入当前文件夹

    • 命令行输入 cnpm init 将当前文件夹初始化

      • 参数不需要改变直接使用默认值即可
    • 命令行输入 cnpm install gulp --save -dev 下载gulp

      • 自行下载gulp中需要使用的插件 gulp-sass gulp-minify-css gulp-rename
    • 在当前文件夹中创建 gulpfile.js 文件 所用对于node的操作代码都在这个文件中编写, 文件名不可以更改

      • 注 也可以在命令行中输入 touch gulpfile.js 来创建该文件
    • 具体的代码在xiaomi 目录下 的gulpfile.js中查看


2.模块化管理系统

  • 将require.js 文件添加到当前文件夹中

    • 模块化管理是为了便于后期代码的维护
    • 在当前html页面中编写
      • 其中defer 和 async=“true” 的作用是异步引入js文件
   <script src="require.js文件的路径" defer async="true" data-main="你想要作为管理js文件的js文件的路径">
  • 在管理js文件的js文件(我将其称为 中转站.js)中编写以下代码
require.config({paths: {// 导入该文件所需要的js文件  "jquery": "jquery-1.11.3", // 这里的.js后缀可以省略....},shim:{// 设置依赖关系 如果引入的js文件有依赖关系需要设置"jquery-cookie":["jquery"]}
})
// 以下是将导入的js文件中暴露出来的函数进行调用
require(["nav"],function(nav) {nav.download();
....
})
  • 在各个模块中编写代码时要遵从AMD规范 具体如下
   // 所有代码都应该写入在define中  然后将需要暴露的函数用 return 暴露出去 然后再在中转站.js中调用define(["jquery"],function($) {function download() {...}return {download : download,...}}

3.各个模块.js文件编写的注意规范

  • 想要在通过异步加载出来的标签中添加事件的话, 不可以之间添加在该标签上, 因为异步加载出来的数据, 在添加事件这个操作之后, 此时是获取不了该标签的. 所以要通过事件委托来添加事件, 将事件委托给原本页面就拥有的标签, 具体是通过jquery中的on方法来添加, 具体代码如下
$("被委托的标签(页面本来就有的标签)").on("事件类型","委托的标签(通过异步加载出来的标签)",function() {// 函数操作
})
  • 编写完的函数代码, 一定要记得通过return 暴露出去, 然后在 中转站.js 文件中调用生效

  • 用jquery 的 $.ajax 获取到的数据, jquery已经很贴心地将字符串转换为了代码块, 所以不需要再通过 JSON.parse() 转换


4. 编写注册页面

  • 在mysql 数据管理器 或者在 http://localhost/phpMyAdmin/ 中 新建一个数据库 [注]id属性要设置主键属性和自动递增

  • php代码

<?phpheader('content-type:text/html;charset="utf-8"');// var_dump($_POST);// 定义一个统一的返回格式$responseData = array("code" => 0,"message" => "");// 将通过post提交的数据全部取出$username = $_POST['username'];$password = $_POST['password'];$repassword = $_POST['repassword'];$createtime = $_POST['createtime'];// 对后台接收到的数据, 进行一个简单的判断if (!$username) {$responseData["code"] = 1;$responseData["message"] = "用户名不能为空";// 将数据按照统一的返回格式返回echo json_encode($responseData);exit;}if (!$password) {$responseData["code"] = 2;$responseData["message"] = "密码不能为空";echo json_encode($responseData);exit;}if ($repassword != $password) {$responseData["code"] = 3;$responseData["message"] = "两次密码输入不一致";echo json_encode($responseData);exit;}// 链接数据库, 判断用户名是否已经存在// PHP7语法  安装PHP5.6的语法// 天龙八部第一步 链接数据库 $link = mysql_connect("127.0.0.1","root","123456");// PHP7 $link = mysqli_connect();// 第二步 判断是否链接成功if (!$link) {$responseData['code'] = 4;$responseData['message'] = "服务器忙";// 返回到前台页面echo json_encode($responseData);exit;}// 第三步 设置字符集mysql_set_charset("utf8");// 第四步 选择数据库mysql_select_db("xiaomi");// 5. 准备sql语句进行 验证用户名是否重名 插入操作$sql = "select * from users where username='{$username}'";// 6. 发送sql语句$res = mysql_query($sql);// 7. 取出一行数据$row = mysql_fetch_assoc($res);// 如果 $row 的值为null 说明连一条语句都查询不出来 说明没有这个用户名if ($row) { // 如果$row 不为空 则说明重名了// 用户名重名$responseData["code"] = 5;$responseData["message"] = "用户名已存在";// 将数据按照同意的返回格式返回echo json_encode($responseData);exit;}// 能进行到这里 说明用户名可以注册了// 将密码md5加密 md5规则可以自己设定 但是后面解密也要用相同的规则$str = md5(md5(md5($password)."beijing")."zhonghuo");// 准备sql语句 存储用户名 密码 创建时间$sql2 = "insert into users(username,password,createtime) values('{$username}','{$str}',{$createtime})";// 发送sql语句$res2 = mysql_query($sql2);if(!$res2) { // 如果$res2 为真则说明注册成功 如果为假则说明注册失败$responseData['code'] = 6;$responseData['message'] = "注册失败";// 返回到前台页面echo json_encode($responseData);} else {$responseData['message'] = "注册成功";// 返回到前台页面echo json_encode($responseData);};// 8. 关闭数据库mysql_close($link);?>

js代码

define(["jquery"], function ($) {function registerSend() {$("#register-button").click(function () {$.ajax({type : "post",url : "./php/register.php",data : {username : $(".item_account").eq(0).val(),password : $(".item_account").eq(1).val(),repassword : $(".item_account").eq(2).val(),createtime : new Date().getTime()},success : function (result) {// console.log(result);// 解析数据var obj = JSON.parse(result);if (obj.code) {$(".err_tip").find("em").attr("class","icon_error");} else {$(".err_tip").find("em").attr("class","icon_select icon_true");setTimeout(function() {location.assign("login.html");},1000)}$(".err_tip").show().find("span").html(obj.message);},error : function (msg) {console.log(msg);}})})}return {registerSend: registerSend}
})

5. 编写登陆页面代码

  • php 代码
<?phpheader('content-type:text/html;charset="utf-8"');// var_dump($_POST);// 定义一个统一的返回格式$responseData = array("code" => 0,"message" => "");// 将通过post提交的数据全部取出$username = $_POST['username'];$password = $_POST['password'];// 对后台接收到的数据, 进行一个简单的判断if (!$username) {$responseData["code"] = 1;$responseData["message"] = "用户名不能为空";// 将数据按照统一的返回格式返回echo json_encode($responseData);exit;}if (!$password) {$responseData["code"] = 2;$responseData["message"] = "密码不能为空";echo json_encode($responseData);exit;}// 链接数据库, 判断用户名是否已经存在// PHP7语法  安装PHP5.6的语法// 天龙八部第一步 链接数据库 $link = mysql_connect("127.0.0.1","root","123456");// PHP7 $link = mysqli_connect();// 第二步 判断是否链接成功if (!$link) {$responseData['code'] = 3;$responseData['message'] = "服务器忙";// 返回到前台页面echo json_encode($responseData);exit;}// 第三步 设置字符集mysql_set_charset("utf8");// 第四步 选择数据库mysql_select_db("xiaomi");// 5. 准备sql语句进行 验证用户名和密码是否匹配$str = md5(md5(md5($password)."beijing")."zhonghuo");$sql = "select * from users where username='{$username}' and password='{$str}'";// 6. 发送sql语句$res = mysql_query($sql);// 7. 取出一行数据$row = mysql_fetch_assoc($res);// 如果 $row 如果$row的值不为空则用户名和密码输入正确if (!$row) { // 如果$row 不为空 则说明输入正确// 用户名重名$responseData["code"] = 4;$responseData["message"] = "用户名或密码错误";// 将数据按照同意的返回格式返回echo json_encode($responseData);exit;} else{$responseData["message"] = "登陆成功";// 将数据按照同意的返回格式返回echo json_encode($responseData);}// 8. 关闭数据库mysql_close($link);?>
  • js代码
define(["jquery"], function ($) {function loginUser() {$("#login-button").click(function () {$.ajax({type : "post",url : "./php/login.php",data : {username : $(".item_account").eq(0).val(),password : $(".item_account").eq(1).val(),},success : function (result) {// console.log(result);// 解析数据var obj = JSON.parse(result);if (obj.code) {$(".err_tip").find("em").attr("class","icon_error");} else {$(".err_tip").find("em").attr("class","icon_select icon_true");}$(".err_tip").show().find("span").html(obj.message);},error : function (msg) {console.log(msg);}})})}return {loginUser: loginUser}
})

至此 仿照小米官网的项目到此结束

仿照小米官网项目具体操作与细节相关推荐

  1. 小米官网项目制作——javascript知识分享上

    目录 前言 一.整体架构 二.弹出的盒子 1.定位盒子 2.弹出效果 3.其他细节 三.下拉,展开的切换菜单 1.放置盒子 2.切换盒子 3.添加索引 4.侧边展开的盒子 四.轮播图 1.本体的部件 ...

  2. 小米官网项目制作——javascript知识分享下

    目录 前言 一.观察页面内容 二.切换界面 三.登录表单界面 1.选中的效果 2.错误提示 3.不选中的效果 4.密码框 四.注册界面 五.链接跳转 总结 前言 之前我分享了关于小米官网主页的java ...

  3. 项目一:《小米官网》jQuery重构

    小米官网项目的整体布局就不多说了,在项目一:<小米官网>中我就写过了,我就是直接复制粘贴的之前的 html 和 css,只是把JS部分用jQuery重新写了一遍,不想打字了,直接分享下我的 ...

  4. 仿照(小米官网首页轮播图)特效js代码

    最近跟轮播图杠上了,以前也接触过这个轮播图的写法,但是一般都是用插件,久而久之就忘记了!昨晚有学习了一下自己写这个js,虽然是依靠零散的记忆写出来的,可能自己并未真正理解吧!!!以下是我写的代码: & ...

  5. Web项目实战分享——小米官网

    Web项目实战分享--小米官网 大约每个学习过前端的学习者来说,都接触过web项目的实战,业内最真实的的,应该是自己独立编写一个网页项目,当然如果你是大佬的话,这只是小菜一碟,而如果你是小白或正在学习 ...

  6. 项目三《小米官网仿写》

    文章目录 前言 一.下载APP 二.下拉菜单 三. 小米侧边栏 四.登录注册界面 五.lation实现界面切换 总结 前言 本次小米官网仿写复习了之前学到的知识点,运用HTML+CSS+JavaScr ...

  7. 电商项目:仿小米官网纯HTML+css布局

    前言 时间过得很快,已经步入大三下学期了,浪了大学这几年,这几个星期从新把之前学的html+css系统性复习了一遍,虽然之前也学习过,但Monto觉得无论任何事情,基础是最重要的,任何框架千变万变,但 ...

  8. 项目一:《小米官网》

    一.项目介绍 "小米旗舰商城".二十一世纪是网络休闲生活的时代,在这互联网时代, 网络销售已经变成了现在较大的-一个营销模式.如今信息网络的发展可以说是一日千里,透过网络的运用,可 ...

  9. CSS项目基础实战:实现小米官网+详细步骤分析+出错问题总结

    1.有关项目的基本结构:|--html 文件与 CSS 文件单独设置分开.|--在html中引入:|--重置样式表|--网页基本样式表:所有网页所共有使用的部分:网页宽度.网页字体.颜色.设置最小宽度 ...

最新文章

  1. VS打开文件,解决方案资源管理器自动定位到文件位置
  2. python3 unicode字符串_【已解决】Python3中如何声明字符串是unicode类型以避免log日志打印出错...
  3. hp服务器修改bios设置,HP服务器BIOS详解.pdf
  4. 高精度练习- P1015 回文数
  5. python序列化模块struct_Python-序列化模块-json-62
  6. 数据库之ODPS中sql语句指南
  7. appstore 客户端技术
  8. hdu 4512 吉哥系列故事——完美队形I(最长公共上升自序加强版)
  9. 查看CDH平台各个组件的版本
  10. telnet的基本配置(cisco、H3C、huawei 三个例子)
  11. 模拟支付宝服务窗环境
  12. Geohot使用绿雨的BETA4越狱iPhone4 4.1固件详细教程
  13. 系统性的学会 Pandas, 看这一篇就够了!
  14. CICD实战——使用Jenkins实现自动化部署和环境隔离
  15. 基于java小区物业管理系统
  16. 关于hive报错expression not in group by key ‘.....‘
  17. matlab三维图渲染颜色,三维图颜色渐变
  18. 13异步多线程(三)Parallel,线程安全
  19. 微信发红包测试点整理
  20. xmind 使用教程

热门文章

  1. 问题六十六:怎么用ray tracing画CSG(Constructive Solid Geometry 构造实体几何)图形
  2. 问题十五:C++中抽象类,虚函数是什么鬼?怎么测试
  3. 鼠标移到图片上,图片放大
  4. 提高数据质量的方法有哪些
  5. 常见数据分析误区有哪些
  6. html字体颜色闪动,HTML最简单的文字闪烁代码
  7. 大学中计算机考查课不及格怎么办,大学体测不及格怎么办 有哪些补救方法
  8. java启动mysq服务_启动和关闭MySQL服务
  9. Maven本地环境配置(Win10)
  10. php编程之如何调用支付宝支付接口的实现