首页 文章 精选 留言 我的

精选列表

搜索[软件构建],共10000篇文章
优秀的个人博客,低调大师

Python Django(WEB电商项目构建)

(坚持每一天,就是成功) Python Django Web框架,Django是一个开放源代码的Web应用框架,由Python写成。采用了MTV的框架模式,即模型M,模板T和视图V组成。 安装Python 和 Django可以自己查阅资料 此文均在Pycharm下进行需要下载可加群:607021567找群主,本文主要介绍电商产品。所以可自行学习,创造自己的网站。 1、Django架构设计: Django是一个基于 MVC构造的框架。但是在Django中,控制器接受用户输入的部分由框架自行处理,所以 Django 里更关注的是模型(Model)、模板(Template)和视图(Views),称为 MTV模式。它们各自的职责如下: 层次 职责 模型(Model),即数据存取层 处理与数据相关的所有事务: 如何存取、如何验证有效性、包含哪些行为以及数据之间的关系等。 模板(Template),即业务逻辑层 处理与表现相关的决定: 如何在页面或其他类型文档中进行显示。 视图(View),即表现层 存取模型及调取恰当模板的相关逻辑。模型与模板的桥梁。 2、工作机制: (这里的文件顺序或包含文件夹并不相同,我是为了介绍各个文件,所以拼接到一起。) 1.用manage .py runserver 启动Django服务器时就载入了在同一目录下的settings .py。这里的settings.py文件内包含着数据库信息的设置,静态文件的设置,静态文件指(js,css,html,images)等,settings.py文件是我们django框架的核心文件之一。该文件包含了项目中的配置信息,如前面讲的URLConf等,其中最重要的配置就是ROOT_URLCONF,它告诉Django哪个Python模块应该用作本站的URLConf,默认的是urls .py。 2.当访问url的时候,Django会根据ROOT_URLCONF的设置来装载URLConf。 3.然后按顺序逐个匹配URLConf里的URLpatterns。如果找到则会调用相关联的视图函数(index.py),并把HttpRequest对象作为第一个参数(通常是request)(函数的参数是request)。 4.最后该view函数负责返回一个HttpResponse对象(html网页)。 这里的核心文件已经介绍完,剩下的文件可以在我们熟悉django框架后在认识,所以不一一介绍了! 3、部署: Django可以运行在Apache,Nginx上,也可以运行在支持WSGI,FastCGI的服务器上。支持多种数据库,已经支持Postgresql,MySql, Sqlite3,Oracle。Google App Engine也支持Django的某些部分,国内支持的平台有(SAE)Sina App Engine,(BAE)百度应用引擎。 4、管理文件夹 接下来介绍核心文件夹,这里是分类清楚我们的文件该怎么去管理: (一)、这里的文件夹名字可以自己任意去命名,第一行是我们的django项目的主文件夹名字,默认主文件夹下可以自己创建自己的py文件的文件夹,不过pycharm自动创建了py文件的文件夹,命名规则是以主文件夹命名。 (二)、第二行就是我们的py文件所在的文件夹,这些py文件主要是我们操作前端到后台所需要的。 (三)、第三行为我们的静态文件目录包含———:Js、Css、Html、img、fonts等文件 (四)、第四行主要是我们的Html模板文件目录,这里存放我们的主页,后台管理页的html文件。 (五)、manage.py启动文件 5、电商项目——产品数据,后台管理 电商项目用户部分:主要分为三大类——1、用户浏览商品 ,2、购买商品 ,3、管理订单 电商项目管理部分:主要也为三大类——1、商品数据整合网站 ,2、接受用户信息数据存入后台(注册和管理),2、处理用户订单问题 分析到这里首先进行电商管理部分,商品数据整合——SqlServer + Django: 首先我们需要创建连接数据库py文件——dataas.py: 1 class oneic_settings: 2 MSSQL_INFO = {"hostname":"xxx","username":"xxx","password":"xxx","dbname":"xx"} 接下来创建对数据库详细操作的py文件——data_db.py: 1 from dataas import oneic_settings 2 def mssqlserver_conn_db(): 3 try: 4 #strconn= 'DSN=test;uid='+oneic_settings.MSSQL_INFO.get("username")+';PWD='+oneic_settings.MSSQL_INFO.get("password") 5 strconn= 'DRIVER={SQL Server};SERVER='+oneic_settings.MSSQL_INFO.get("hostname")+';DATABASE='+oneic_settings.MSSQL_INFO.get("dbname")+';UID='+oneic_settings.MSSQL_INFO.get("username")+';PWD='+oneic_settings.MSSQL_INFO.get("password") 6 db = pyodbc.connect(strconn) 7 return db 8 except Exception,e: 9 print e 这里首先使用准备好的sql文件,就是我们的详细数据文件。 6、电商项目——后台部分 1、网站首页各个页面的html模板,这里的模板就是需要各位自己去创造了,这里需要储备前端的基础知识,包括:JS,CSS,HTML基础技能,也可直接下载现成的模板。 2、管理静态文件——settings.py: 1 TEMPLATE_DIRS = ( 2 'E:/Oneic_new/Oneic_new', 3 # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates". 4 # Always use forward slashes, even on Windows. 5 # Don't forget to use absolute paths, not relative paths. 6 ) 7 STATIC_URL = 'E:/Oneic_new/static/' 8 STATIC_ROOT = 'E:/Oneic_new/static/' 9 10 TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),) 这里主要修改STATIC_URL 和 STATIC_ROOT文件。 3、策划url.py文件——控制网页首页显示: 1 from django.conf import settings 2 (r'^static/(?P<path>.*)$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}), 3 url(r'^admin/', include(admin.site.urls)), 4 url(r'$','Oneic_new.index.new_html') 这写代码除了3行,剩余是我需要添加的代码,第2行就是静态文件的部署,4行是django所要找到url的位置。 4、处理数据传入操作——index.py: 1 import common 2 import sms 3 from uc import getShopCart,checkLogin 4 def basicinfo(request): 5 logininfo = checkLogin(request) 6 if logininfo and logininfo.get('loginuserid') != None and logininfo.get('loginuserid')!="": 7 userdata={} 8 if logininfo.get('usertype') == None or logininfo.get('usertype') == "" or logininfo.get('usertype') == "0": 9 return HttpResponseRedirect('/selectType.html') 10 mssql_conn = common.mssqlserver_conn_db() 11 cs = mssql_conn.cursor() 12 cs.execute("{call sp_member_Allinfo_get_py (?)}", logininfo.get('loginuserid')) 13 q = cs.fetchone() 14 cs.commit() 15 if (q and len(q) > 0): 16 if q[0] != 0: 17 userdata['mp'] = q[1] 18 userdata['realname'] = q[2] 19 userdata['corname'] = q[3] 20 userdata['tel'] = q[4] 21 userdata['fax'] = q[5] 22 userdata['pos'] = q[6] 23 userdata['userType'] = q[7] 24 userdata['userLevel'] = q[8] if q[8] else '' 25 userdata['userClass'] = q[9] if q[9] else '' 26 userdata['province'] = q[10] if q[10] else '' 27 userdata['city'] = q[11] if q[11] else '' 28 userdata['district'] = q[12] if q[12] else '' 29 userdata['address'] = q[13] if q[13] else '' 30 userdata['RegTime'] = q[14].strftime('%Y-%m-%d %H:%M:%S') if q[14] else '' 31 userdata['LastLoginTime'] = q[15].strftime('%Y-%m-%d %H:%M:%S') if q[15] else '' 32 userdata['LastLoginIP'] = q[16] if q[16] else '' 33 userdata['LoginCount'] = q[17] if q[17] != None else '' 34 userdata['Email'] = q[18] if q[18] else '' 35 userdata['lottery_num'] = q[19] if q[19] != None else 0 36 userdata['integral_num'] = q[20] if q[20] != None else 0 37 userdata['po_num'] = q[21] if q[21] != None else 0 38 userdata['work_order_num'] = q[22] if q[22] != None else 0 39 userdata['rfq_num'] = q[23] if q[23] != None else 0 40 logininfo['userdata'] = userdata 41 cs.close() 42 mssql_conn.close() 43 return render_to_response('index.html',logininfo) 44 else: 45 return HttpResponseRedirect('/signin') 这里包含cookie检测:checkLogin.py文件——cookie检测。logininfo——为我们需要的数据就是要在网页中显示的数据。 checkLogin.py: 1 from django.conf import settings 2 #检测是否登录 3 def checkLogin(req): 4 edition_id = settings.SESSION_CSSID 5 eny_email = req.COOKIES.get(settings.SESSION_COOKIE_MAIL,'') 6 eny_mp = req.COOKIES.get(settings.SESSION_COOKIE_MP,'') 7 eny_userid = req.COOKIES.get(settings.SESSION_COOKIE_UID,'') 8 eny_usertype = req.COOKIES.get(settings.SESSION_COOKIE_UTYPE,'') 9 10 cartlist = getShopCart(req) 11 login_info = {"cartlist":cartlist,"cartnum":len(cartlist),"loginemail":"","loginuserid":"","loginmp":"","usertype":"","css_id":edition_id} 12 if eny_email != "": 13 login_info['loginemail'] = DES.decrypt(str(eny_email)) 14 if eny_usertype: 15 login_info['usertype'] = DES.decrypt(str(eny_usertype)) #DES为加密的py文件,可以自己随便写! 16 if eny_userid != "": 17 login_info['loginuserid'] = DES.decrypt(str(eny_userid)) 18 cartnum = getShoppcartNum(login_info.get('loginuserid')) 19 login_info['cartnum'] = cartnum 20 if eny_mp != "": 21 mphone = DES.decrypt(str(eny_mp)) 22 enymp = [] 23 mp=list(mphone) 24 for i in range(0,len(mp)): 25 if i>2 and i<7: 26 mp[i]=chr(42) 27 enymp.append(mp[i]) 28 else: 29 enymp.append(mp[i]) 30 eny_Mp = ''.join(enymp) 31 login_info['loginmp'] = eny_Mp 32 login_info['mp'] = DES.decrypt(str(eny_mp)) 33 34 return login_info 这里是后台基本完成的项目了之一!WEB的是需要一步一步去扩建,所以我只是介绍一下我们日常项目的简单介绍,如果又不太详细的可加群! 7、电商项目——前端构造: 这里JS,CSS我不去解释了,因为他们是前端的基础应用,其中与python密切结合的是html: 所以我简单介绍一下在html文件中怎么去应用我们后台传入的数据: 1、值传入: 1、<link rel="stylesheet" type="text/css" href="/css/www_style.css?v={{ css_id }}" /> 2、<div><p>{{参数}</p></div> 这里的值与参数都是“ {{ 参数 }} ”两个大括号嵌入的。 2、判断——可直接在html中写if else语句: 1 {% if condition %} 2 ... display 3 {% endif %} 4 5 or 6 7 {% if condition1 %} 8 ... display 1 9 {% elif condition2 %} 10 ... display 2 11 {% else %} 12 ... display 3 13 {% endif %} 这里的用法和python文件中用法无异。 3、嵌入网页: 1 {% include 'template/footer.html' %} 一定要写路径。 至此,总体电商项目初入门介绍完毕,剩下的就是需要自己来创造其它的管理层页面。加油!之后也许继续会出多层次界面的介绍,请期待!Welcome to Python world! I have a contract in this world! How about you?

优秀的个人博客,低调大师

使用 Docker 镜像构建 GO 语言环境

1. 安装 Docker 我当前使用的系统环境是CentOS7,安装Docker使用的命令是yum install docker*。至于其它系统,可以到百度查找其对应的安装方式。 2. 配置 Docker 镜像仓库的地址 目前来说,直接访问 Docker 官网的 DockerHub 会比较慢, 不过幸好现在国内出现了一些 DockerHub 的加速网站。 下面使用 ustc 加速器。 修改文件 /etc/docker/daemon.json,将其内容修改为 1 2 3 { "registry-mirrors" : [ "https://docker.mirrors.ustc.edu.cn" ] } 配置完成后,重启 Docker 服务:systemctl restart docker 这样就可以使用 https://docker.mirrors.ustc.edu.cn 加速器了。 如果 ustc 的加速器速度不够快,还可以尝试一下其它的加速器,具体请参考这里Docker 镜像加速器 3. 下载 golang 的 Docker 镜像 现在就可以下载 golang 的 Docker 镜像了。 在命令行执行命令 docker search golang 就可以查询 golang 镜像的信息了。 1 2 3 4 5 6 $ docker search golang INDEX NAME DESCRIPTION STARS OFFICIAL AUTOMATED docker.io docker.io /golang Go (golang) is... 1649 [OK] docker.io docker.io /circleci/golang Go (golang) is... 8 docker.io docker.io /resin/artik710-golang Go (golang) is... 1 docker.io docker.io /resin/artik10-golang Go (golang) is... 0 可以看到,在查询结果中排名第一的,STARS 数量最多, 并且 OFFICIAL 选项下面是 OK ,说明是官方的,所以理论上应该是更可信的。 所以我们就选择使用第一个了。 执行命令 docker pull docker.io/golang 来下载 golang 的官方镜像吧。 $ docker pull docker.io/golang [root@fengbo golang]$ docker pull docker.io/golang Using default tag: latest Trying to pull repository docker.io/library/golang ... latest: Pulling from docker.io/library/golang 723254a2c089: Extracting [===============================> ] 40.83 MB/45.12 MB abe15a44e12f: Download complete 409a28e3cc3d: Download complete 503166935590: Download complete abe52c89597f: Download complete ce145c5cf4da: Downloading [===============> ] 31.36 MB/104.3 MB 96e333289084: Download complete 39cd5f38ffb8: Download complete 39cd5f38ffb8: Pulling fs layer 下载好了之后,查看一下镜像的信息 docker images golang [root@fengbo golang]$ docker images golang REPOSITORY TAG IMAGE ID CREATED SIZE docker.io/golang latest 138bd936fa29 4 weeks ago 733.3 MB 4. 使用 golang 镜像 执行命令docker run -it --rm golang bash,测试一下刚刚下载的 golang 镜像 [root@fengbo golang]$ docker run -it --rm golang bash root@9e46b1255f4b:/go# go version go version go1.9.2 linux/amd64 可以看到,最新的是 1.9.2 版本的。 查看进到容器后的默认目录 root@9e46b1255f4b:/go# pwd /go 看来是在 /go 目录下面。 不过因为我们在创建容器的时候加了 --rm 参数,所以当我们执行 exit 命令退出容器的时候,这个临时容器会被删除。 那我们如何使用这个 golang 的镜像来工作呢? 5. golang 的 Docker 镜像的一种使用方式 首先,如果我们把文件直接写在 Docker 容器里面的话,那么数据是无法持久化的。 即使可以使用 docker cp 命令这样的方式把我们的文件复制到容器内部, 或者把文件从容器中复制出来,但是在操作的时候仍会有很多不方便的地方。 而且,在 golang 的镜像中进行 build 操作的时候,程序依赖的第三方包, 会被下载到容器的 /go 目录下面。如果每次容器都删除, 或者每次创建新的容器的时候,都需要从网络上拉取一次第三方包。 如果网速快的话还好,否则时间浪费的有点儿严重。 所以,我们要把主机的目录映射到容器中,这样就可以把文件进行持久化了。 我们可以使用 docker 命令的 -v 参数,把主机的目录映射到容器中。 不过只使用 -v 参数的话,在容器内部操作目录会有权限限制, 所以还需要增加 --privileged 参数给容器放权。 [root@fengbo golang]$ pwd # 查看当前所在的目录 /root/golang [root@fengbo golang]$ ls -l # 查看当前目录下的子目录和文件等 total 0 drwxrwxrwx. 2 root root 6 Jan 10 01:19 code drwxrwxrwx. 2 root root 6 Jan 10 01:20 go [root@fengbo golang]$ docker run \ # 执行 docker 命令,创建一个新的容器并运行这个容器 > -it \ # 使用交互模式 > --rm \ # 当退出这个容器时,系统自动删除这个容器 > -v /root/golang/go:/go \ # 把主机的目录 '/root/golang/go' 映射为容器内的目录 '/go' > -v /root/golang/code:/code \ # 把主机的目录 '/root/golang/code' 映射为容器内的目录 '/code' > --privileged \ # 给这个容器超级权限,否则无法操作上面映射进去的两个目录 > docker.io/golang \ # 基于镜像 'docker.io/golang' 创建容器 > bash # 在容器内执行命令 'bash' > root@fe6be9f3b22d:/go# # 已经进入容器了 我们可以在容器的目录 /go 和目录 /code 里面创建一些文件, 然后返回主机查看。 root@bb2942f33960:/go# echo "hello" > /go/h.txt # 在容器内,创建文件 '/go/h.txt' 并写入数据 root@bb2942f33960:/go# echo "world" > /code/w.txt # 在容器内,创建文件 '/code/w.txt' 并写入数据 root@bb2942f33960:/go# exit # 退出容器 exit [root@fengbo golang]# find # 已经回到主机了。在主机的 '/root/golang' 目录下查看文件 . ./code ./code/w.txt # 可以看到文件 'w.txt' ./go ./go/h.txt # 以及文件 'h.txt' [root@fengbo golang]# cat go/h.txt hello [root@fengbo golang]# cat code/w.txt world 使用上面的方法,每次创建了容器,都会把主机上指定的目录映射到容器中,修改的数据也会反映到主机上。 6. 方便以后查阅和直接使用,完整命令如下 开启容器 docker run -it --rm -v /root/golang/go:/go -v /root/golang/code:/code --privileged docker.io/golang bash 本文转自郝峰波博客园博客,原文链接:http://www.cnblogs.com/fengbohello/p/8259904.html,如需转载请自行联系原作者

优秀的个人博客,低调大师

使用openstack构建私有云计算平台

一、系统 ubuntu 10.04 Desktop 机器ip:10.1.29.15 二、nova的安装 1.安装所用的信息服务器:Rabbitmq sudo apt-get install rabbitmq-server 2.安装nova 1)nova包安装 sudo apt-get install python-software-properties sudo add-apt-repository ppa:nova-core/trunk sudo apt-get update 注意:如果sudo add-apt-repository ppa:nova-core/trunk不行,换成sudo add-apt-repository ppa:nova-core/release 2)nova依赖包安装 sudo apt-get install python-nova sudo apt-get install python-greenlet python-mysqldb python-nova nova-common nova-doc nova-api nova-network nova-objectstore nova-scheduler nova-compute euca2ools unzip 3)配置nova(/etc/nova/nova.conf) 这个文件是安装nova后自动生成的,如果没有,估计是系统问题。 vim /etc/nova/nova.conf 机器上内容如下: daemonize=1 dhcpbridge_flagfile=/etc/nova/nova.conf dhcpbridge=/usr/bin/nova-dhcpbridge loggdir=/var/log/nova state_path=/var/lib/nova verbose sql_connection=mysql://root:nova@10.1.29.15/nova s3_host=10.1.29.15 rabbit_host=10.1.29.15 ec2_host=10.1.29.15 verbose ec2_url=http://10.1.29.15:8773/services/Cloud network_manager=nova.network.manager.VlanManager fixed_range=10.0.0.0/12 network_size=8 注意:10.1.29.15是我电脑ip,替换成你自己的ip即可 4)创建群组并授权 addgroup nova chown -R root:nova /etc/nova chmod 644 /etc/nova/nova.conf 3.安装mysql 1)绕过所有安装提示,加快安装速度 bash MYSQL_PASS=nova cat mysql-server-5.1 mysql-server/root_password password $MYSQL_PASS mysql-server-5.1 mysql-server/root_password_again password $MYSQL_PASS mysql-server-5.1 mysql-server/start_on_boot boolean true MYSQL_PRESEED 2)安装mysql apt-get install -y mysql-server 3)编辑/etc/mysql/my.cnf,绑定地址 sed -i s/127.0.0.1/0.0.0.0/g /etc/mysql/my.cnf service mysql restart 注:sed -i s/127.0.0.1/0.0.0.0/g /etc/mysql/my.cnf表示在行内全面用127.0.0.1代替0.0.0.0 4)mysql配置 创建nova数据库 mysql -uroot -p$MYSQL_PASS -e CREATE DATABASE nova; root用户为超级用户权限 mysql -uroot -p$MYSQL_PASS -e GRANT ALL PRIVILEGES ON *.* TO root@% WITH GRANT OPTION; 设置root用户密码 mysql -uroot -p$MYSQL_PASS -e SET PASSWORD FOR root@% = PASSWORD($MYSQL_PASS); 注意:mysql的root用户初始密码为空,在设置密码时候,最好自己设定一个密码来代替$MYSQL_PASS 4.网桥配置 vim /etc/network/interfaces 修改后内容如下: # The loopback network interface auto lo iface lo inet loopback # Networking for NOVA auto br100 iface br100 inet static address 10.1.29.15 netmask 255.0.0.0 network 10.0.0.0 broadcast 10.255.255.255 gateway 10.1.0.254 bridge_ports eth0 bridge_stp off bridge_maxwait 0 bridge_fd 0 # dns-* options are implemented by the resolvconf package, if installed dns-nameservers 59.108.119.3 注意:在官方配置介绍用的是DHCP,这里使用静态ip地址,根据实际情况,修改相应的address、netmask、network、broadcast、gateway、dns等。 最后,重启mysql:sudo /etc/init.d/networking restart 5.nova环境配置 /usr/bin/nova-manage db sync /usr/bin/nova-manage user admin dub /usr/bin/nova-manage project create dubproject dub /usr/bin/nova-manage network create 192.168.0.0/24 1 255 注意:数据名、用户名、项目名等都可以自己设定。 6.nova认证 mkdir –p /root/creds /usr/bin/python /usr/bin/nova-manage project zipfile $NOVA_PROJECT $NOVA_PROJECT_USER /root/creds/novacreds.zip unzip /root/creds/novacreds.zip -d /root/creds/ cat /root/creds/novarc >> ~/.bashrc source ~/.bashrc 注意:要在root下能建立目录,必须是root用户,可以用以下命令: sudo passwd root su root 输入密码,进入root用户 7.重启相关服务 /etc/init.d/libvirt-bin restart; service nova-network restart; service nova-compute restart; service nova-api restart; service nova-objectstore restart; service nova-scheduler restart 注意:/etc/init.d/libvirt-bin代替libirtd,ubuntu中没有libirtd 8.授权ping和ssh命令给VMS euca-authorize -P icmp -t -1:-1 default euca-authorize -P tcp -p 22 default (不能ping或ssh时候,使用以下命令) killall dnsmasq service nova-network restart chgrp kvm /dev/kvm chmod g+rwx /dev/kvm 配置防火墙 # iptables -t nat -A PREROUTING -d 169.254.169.254/32 -p tcp -m tcp dport 80 -j DNAT to-destination 10.1.29.15:8773 注意:10.1.29.15改成你自己机器的ip 8.安装后测试 1)查看mysql中services表数据 mysql -u$root-p$nova nova -e select * from services; 注意:root是用户名,nova是密码,用你自己设定的mysql用户名和密码即可。 2)获取image image=ttylinux-uec-amd64-12.1_2.6.35-22_1.tar.gz wget http://smoser.brickies.net/ubuntu/ttylinux-uec/$image uec-publish-tarball $image mybucket 3)为ssh创建安全认证 euca-add-keypair mykey > mykey.priv chmod 0600 mykey.priv 4)查看镜像 euca-describe-images 5)运行 euca-run-instances $emi -k mykey -t m1.tiny 注意:$emi用实际的代替,如:ami-u5o8a5lg euca-describe-instances ssh -i mykey.priv root@10.1.29.15 euca-terminate-instances ami-u5o8a5lg-id 到此,nova的私有云就安装完毕 本文转自 念槐聚 博客园博客,原文链接:http://www.cnblogs.com/haochuang/archive/2011/11/24/2262016.html,如需转载请自行联系原作者

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册